您的位置:首页 > 编程语言 > Java开发

【Java基础知识】JDBC基本操作

2016-10-17 14:16 573 查看
Jdbc简介

JDBC(Java Data Base Connectivity )(java 数据库连接)

可以为多种数据库提供统一的数据库访问。



JDBC使用详解

 

JDBC编程步骤

1.      加载驱动程序:Class.forName(driverClass)

加载Mysql驱动Class.forName(“com.mysql.jdbc.Driver”);

加载Oracle驱动:Class.forName(“oracle.jdbc.driver.OracleDriver”);

2.      获得数据库连接

DriverManager.getConnection(“jdbc:mysql://127.0.0.1:3306/imooc”,”root”,”root”);

3.      创建Statement对象:conn.createStatement();

 

例子:简单MVC模式数据库操作



1.首先创建我们的数据库。

CREATE TABLE `imooc_goddess` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(30) NOT NULL,
`sex` int(11) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`birthday` date DEFAULT NULL,
`email` varchar(30) DEFAULT NULL,
`mobile` varchar(11) DEFAULT NULL,
`create_user` varchar(30) DEFAULT NULL,
`create_date` date DEFAULT NULL,
`update_user` varchar(30) DEFAULT NULL,
`update_date` date DEFAULT NULL,
`isdel` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

2. 模型层M:Godness.java 类,和数据库字段相对应
/*
* 模型层,创建类对应我们的数据库
*/
public class Godness {
private Integer id;
private String user_name;
private Integer sex;
private Integer age;
private Date birthday;
private String email;
private String mobile;
private String create_user;
private String update_user;
private Date create_date;
private Date update_date;
private Integer isdel;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getCreate_user() {
return create_user;
}
public void setCreate_user(String create_user) {
this.create_user = create_user;
}
public String getUpdate_user() {
return update_user;
}
public void setUpdate_user(String update_user) {
this.update_user = update_user;
}
public Date getCreate_date() {
return create_date;
}
public void setCreate_date(Date create_date) {
this.create_date = create_date;
}
public Date getUpdate_date() {
return update_date;
}
public void setUpdate_date(Date update_date) {
this.update_date = update_date;
}
public Integer getIsdel() {
return isdel;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public void setIsdel(Integer isdel) {
this.isdel = isdel;
}
@Override
public String toString() {
return "Godness [id=" + id + ", user_name=" + user_name + ", sex="
+ sex + ", age=" + age + ", birthday=" + birthday + ", email="
+ email + ", mobile=" + mobile + ", create_user=" + create_user
+ ", update_user=" + update_user + ", create_date="
+ create_date + ", update_date=" + update_date + ", isdel="
+ isdel + "]";
}
}3.模型层M:DBUtil.java 获取数据库的连接
public class DBUtil {

private static final String URL = "jdbc:mysql://127.0.0.1:3306/jdbcdb";
private static final String USER = "root";
private static final String PASSWORD = "limeng";

private static Connection conn = null;
static {
// 1.加载驱动程序
try {
Class.forName("com.mysql.jdbc.Driver");
// 2.获得数据库连接
conn = DriverManager.getConnection(URL, USER, PASSWORD);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}

public static Connection getConnection() {
return conn;
}
}4.模型层M:GodnessDao.java 增删改查方法。
//增删改查方法
public class GodnessDao {
public void addGodness(Godness godness) throws SQLException{
Connection conn = DBUtil.getConnection();
String sql = ""+
"insert into imooc_goddess"+
"(user_name,sex,age,birthday,email,mobile,"+
"create_user,create_date,update_user,update_date,isdel)"+
"values("+
"?,?,?,?,?,?,?,current_date(),?,current_date(),?)";
//预编译sql语句
PreparedStatement ptmt = conn.prepareStatement(sql);

ptmt.setString(1, godness.getUser_name());
ptmt.setInt(2, 1);
ptmt.setInt(3, godness.getAge());
ptmt.setDate(4, new Date(godness.getBirthday().getTime()));
ptmt.setString(5, godness.getEmail());
ptmt.setString(6, godness.getMobile());
ptmt.setString(7, godness.getCreate_user());
ptmt.setString(8, godness.getUpdate_user());
ptmt.setInt(9, 0);
ptmt.execute();
}

public void updateGodness(Godness godness) throws SQLException{
Connection conn = DBUtil.getConnection();
String sql = ""+
" update imooc_goddess"+
" set user_name=?,sex=?,age=?,birthday=?,email=?,mobile=?,"+
" create_user=?,update_user=?,update_date=current_date(),isdel=?"+
" where id=?";
//预编译sql语句
PreparedStatement ptmt = conn.prepareStatement(sql);

ptmt.setString(1, godness.getUser_name());
ptmt.setInt(2, 1);
ptmt.setInt(3, godness.getAge());
ptmt.setDate(4, new Date(godness.getBirthday().getTime()));
ptmt.setString(5, godness.getEmail());
ptmt.setString(6, godness.getMobile());
ptmt.setString(7, godness.getCreate_user());
ptmt.setString(8, godness.getUpdate_user());
ptmt.setInt(9, 0);
ptmt.setInt(10, godness.getId());
ptmt.execute();
}

public void delGoddness(Integer id) throws SQLException{
Connection conn = DBUtil.getConnection();
String sql = ""+
" delete from imooc_goddess"+
" where id=?";
//预编译sql语句
PreparedStatement ptmt = conn.prepareStatement(sql);

ptmt.setInt(1, id);
ptmt.execute();
}
//查询所有的数据
public List<Godness> query() throws SQLException{
Connection conn = DBUtil.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from imooc_goddess");

List<Godness> gs = new ArrayList<Godness>();
Godness g = null;
while (rs.next()) {
g = new Godness();
g.setId(rs.getInt("id"));
g.setUser_name(rs.getString("user_name"));
g.setAge(rs.getInt("age"));
g.setSex(rs.getInt("sex"));
g.setBirthday(rs.getDate("birthday"));
g.setEmail(rs.getString("email"));
g.setMobile(rs.getString("mobile"));
g.setCreate_date(rs.getDate("create_date"));
g.setCreate_user(rs.getString("create_user"));
g.setUpdate_date(rs.getDate("update_date"));
g.setUpdate_user(rs.getString("update_user"));
g.setIsdel(rs.getInt("isdel"));
gs.add(g);
}
return gs;
}
//根据姓名进行查询
public List<Godness> query(String name,String mobile,String email) throws SQLException{
List<Godness> result = new ArrayList<Godness>();

Connection conn = DBUtil.getConnection();
StringBuilder sb = new StringBuilder();
sb.append("select * from imooc_goddess ");
sb.append(" where user_name lik
4000
e ? and mobile like ? and email like ?");

PreparedStatement ptmt = conn.prepareStatement(sb.toString());
ptmt.setString(1, "%"+name+"%");
ptmt.setString(2, "%"+mobile+"%");
ptmt.setString(3, "%"+email+"%");
ResultSet rs = ptmt.executeQuery();
Godness g = null;
while (rs.next()) {
g = new Godness();
g.setId(rs.getInt("id"));
g.setUser_name(rs.getString("user_name"));
g.setAge(rs.getInt("age"));
g.setSex(rs.getInt("sex"));
g.setBirthday(rs.getDate("birthday"));
g.setEmail(rs.getString("email"));
g.setMobile(rs.getString("mobile"));
g.setCreate_date(rs.getDate("create_date"));
g.setCreate_user(rs.getString("create_user"));
g.setUpdate_date(rs.getDate("update_date"));
g.setUpdate_user(rs.getString("update_user"));
g.setIsdel(rs.getInt("isdel"));
result.add(g);
}
return result;
}

public List<Godness> query(List<Map<String,Object >> params) throws SQLException{
List<Godness> result = new ArrayList<Godness>();

Connection conn = DBUtil.getConnection();
StringBuilder sb = new StringBuilder();
sb.append("select * from imooc_goddess where 1=1 ");

if(params != null && params.size()>0){
for(int i = 0; i<params.size();i++){
Map<String, Object> map = params.get(i);
sb.append(" and "+map.get("name")+" "+map.get("rela")+" "+map.get("value"));
}
}

PreparedStatement ptmt = conn.prepareStatement(sb.toString());
ResultSet rs = ptmt.executeQuery();
Godness g = null;
while (rs.next()) {
g = new Godness();
g.setId(rs.getInt("id"));
g.setUser_name(rs.getString("user_name"));
g.setAge(rs.getInt("age"));
g.setSex(rs.getInt("sex"));
g.setBirthday(rs.getDate("birthday"));
g.setEmail(rs.getString("email"));
g.setMobile(rs.getString("mobile"));
g.setCreate_date(rs.getDate("create_date"));
g.setCreate_user(rs.getString("create_user"));
g.setUpdate_date(rs.getDate("update_date"));
g.setUpdate_user(rs.getString("update_user"));
g.setIsdel(rs.getInt("isdel"));
result.add(g);
}
return result;
}

public Godness get(Integer id) throws SQLException{
Connection conn = DBUtil.getConnection();
String sql = ""+
" select * from imooc_goddess"+
" where id=?";
//预编译sql语句
PreparedStatement ptmt = conn.prepareStatement(sql);

ptmt.setInt(1, id);
ResultSet rs =ptmt.executeQuery();
Godness g = new Godness();
while(rs.next()){
g = new Godness();
g.setId(rs.getInt("id"));
g.setUser_name(rs.getString("user_name"));
g.setAge(rs.getInt("age"));
g.setSex(rs.getInt("sex"));
g.setBirthday(rs.getDate("birthday"));
g.setEmail(rs.getString("email"));
g.setMobile(rs.getString("mobile"));
g.setCreate_date(rs.getDate("create_date"));
g.setCreate_user(rs.getString("create_user"));
g.setUpdate_date(rs.getDate("update_date"));
g.setUpdate_user(rs.getString("update_user"));
g.setIsdel(rs.getInt("isdel"));
}
return g;
}
}5.控制层C: GodnessAction.java 调用模型层的方法
//控制层
public class GodnessAction {

public void add(Godness godness) throws SQLException{
GodnessDao dao = new GodnessDao();
dao.addGodness(godness);
}

public Godness get(Integer id) throws SQLException{
GodnessDao dao = new GodnessDao();
return dao.get(id);
}

public void edit(Godness godness) throws SQLException{
GodnessDao dao = new GodnessDao();
dao.updateGodness(godness);
}

public void del(Integer id) throws SQLException{
GodnessDao dao = new GodnessDao();
dao.delGoddness(id);
}

public List<Godness> query() throws SQLException{
GodnessDao dao= new GodnessDao();
return dao.query();
}

public List<Godness> query(List<Map<String,Object >> params) throws SQLException{
GodnessDao dao = new GodnessDao();
return dao.query(params);
}
}6.视图层V: View.java 和用户进行数据交互。
public class View {
private static final String CONTEXT = "欢迎来到女神禁区:\n" + "功能列表:\n"
+ "[MAIN/M]:主菜单\n" + "[QUERY/Q]:查看全部女神的信息\n"
+ "[GET/G]:查看某位女神的详细信息\n" + "[ADD/A]:添加女神信息\n"
+ "[UPDATE/U]:更新女神信息\n" + "[DELETE/D]:删除女神信息\n"
+ "[SEARCH/S]:查询女神信息(根据姓名、手机号来查询)\n" + "[EXIT/E]:退出女神禁区\n"
+ "[BREAK/B]:退出当前功能,返回主菜单";
private static final String OPERATION_MAIN = "MAIN";
private static final String OPERATION_QUERY = "QUERY";
private static final String OPERATION_GET = "GET";
private static final String OPERATION_ADD = "ADD";
private static final String OPERATION_UPDATE = "UPDATE";
private static final String OPERATION_DELETE = "DELETE";
private static final String OPERATION_SEARCH = "SEARCH";
private static final String OPERATION_EXIT = "EXIT";
private static final String OPERATION_BREAK = "BREAK";

public static void main(String[] args) {
System.out.println(CONTEXT);

Scanner scanner = new Scanner(System.in);
Godness godness = new Godness();
GodnessAction action = new GodnessAction();
String prenious = null;
Integer step=1;
List<Map<String, Object>> params = new ArrayList<Map<String,Object>>();
while (scanner.hasNext()) {
String in = scanner.next().toString();
if (OPERATION_EXIT.equals(in.toUpperCase())
|| OPERATION_EXIT.substring(0, 1).equals(in.toUpperCase())) {
System.out.println("你已退出");
break;
}else if (OPERATION_MAIN.equals(in.toUpperCase())
|| OPERATION_MAIN.substring(0, 1).equals(in.toUpperCase())
||OPERATION_BREAK.equals(in.toUpperCase())
||OPERATION_BREAK.substring(0, 1).equals(in.toUpperCase())){
System.out.println(CONTEXT);
}else if (OPERATION_SEARCH.equals(in.toUpperCase())
|| OPERATION_SEARCH.substring(0, 1).equals(in.toUpperCase())
|| OPERATION_SEARCH.equals(prenious)) {
//根据姓名和电话号码查询
prenious = OPERATION_SEARCH;
if(step ==1){

System.out.println("请输入女神的[姓名]");

}else if(step ==2){
Map<String, Object> p = new HashMap<String, Object>();
p.put("name", "user_name");
p.put("rela", "=");
p.put("value","'"+in+"'");
params.add(p);
System.out.println("请输入女神的[电话]");
}else if(step == 3){
Map<String, Object> p = new HashMap<String, Object>();
p.put("name", "mobile");
p.put("rela", "=");
p.put("value", "'"+in+"'");
params.add(p);
try {
List<Godness> res = action.query(params);
for(Godness g:res){
System.out.println(g.getId() + " , " + g.getUser_name()
+ " , " + g.getSex() + "," + g.getAge() + ","
+ g.getBirthday() + "," + g.getEmail() + ","
+ g.getMobile() + "," + g.getIsdel());
}
step = 1;
prenious = null;
params.clear();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(OPERATION_SEARCH == prenious){
step ++;
}
}else if (OPERATION_UPDATE.equals(in.toUpperCase())
|| OPERATION_UPDATE.substring(0, 1).equals(in.toUpperCase())
|| OPERATION_UPDATE.equals(prenious)) {
prenious = OPERATION_UPDATE;
// 更新女神
if(1==step){
System.out.println("请输入要修改女神的[id]:");
}else if(2==step){
godness.setId(Integer.valueOf(in));
System.out.println("请输入女神[姓名]");
}else if(3 == step){
godness.setUser_name(in);
System.out.println("请输入女神[年龄]");
}else if(4 == step){
godness.setAge(Integer.valueOf(in));
System.out.println("请输入女神[生日],格式如:yyyy-MM-dd");
}else if(5 == step){
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
Date birthday = null;
try{
birthday = sf.parse(in);
godness.setBirthday(birthday);
System.out.println("请输入女神[邮箱]");
}catch(ParseException e){
e.printStackTrace();
System.out.println("你输入的格式有误,请重新输入");
step = 3;
}
}else if(6 == step){
godness.setEmail(in);
System.out.println("请输入女神的[手机号]");
}else if(7==step){
godness.setMobile(in);
try{
action.edit(godness);
System.out.println("更新女神成功");
step = 1;
prenious = null;
}catch(Exception e){
e.printStackTrace();
System.out.println("更新女神失败");
}
}

if(OPERATION_UPDATE.equals(prenious)){
step++;
}
}else if (OPERATION_DELETE.equals(in.toUpperCase())
|| OPERATION_DELETE.substring(0, 1).equals(in.toUpperCase())
|| OPERATION_DELETE.equals(prenious)) {
prenious = OPERATION_DELETE;
if(step == 1){
step ++;
System.out.println("删除女神信息,请输入ID:");
}else{
try {
action.del(Integer.valueOf(in));
System.out.println("删除成功!");
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
step --;
prenious = null;
}
}else if (OPERATION_GET.equals(in.toUpperCase())
|| OPERATION_GET.substring(0, 1).equals(in.toUpperCase())
|| OPERATION_GET.equals(prenious)) {
prenious = OPERATION_GET;
if(step == 1){
step ++;
System.out.println("获取女神的详细信息,请输入ID:");
}else{
try {
Godness godness2 = action.get(Integer.valueOf(in));
System.out.println(godness2.getId() + " , " + godness2.getUser_name()
+ " , " + godness2.getSex() + "," + godness2.getAge() + ","
+ godness2.getBirthday() + "," + godness2.getEmail() + ","
+ godness2.getMobile() + "," + godness2.getIsdel());
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
step --;
prenious = null;
}
}else if (OPERATION_QUERY.equals(in.toUpperCase())
|| OPERATION_QUERY.substring(0, 1).equals(in.toUpperCase())) {
try {
List<Godness> list = action.query();
for(Godness go : list){
System.out.println(go.getId() +" --姓名:"+go.getUser_name());
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else if (OPERATION_ADD.equals(in.toUpperCase())
|| OPERATION_ADD.substring(0, 1).equals(in.toUpperCase())
|| OPERATION_ADD.equals(prenious)) {
prenious = OPERATION_ADD;
// 新增女神
if(1==step){
System.out.println("请输入女神[姓名]");

}else if(2 == step){
godness.setUser_name(in);
System.out.println("请输入女神[年龄]");
}else if(3 == step){
godness.setAge(Integer.valueOf(in));
System.out.println("请输入女神[生日],格式如:yyyy-MM-dd");
}else if(4 == step){
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
Date birthday = null;
try{
birthday = sf.parse(in);
godness.setBirthday(birthday);
System.out.println("请输入女神[邮箱]");
}catch(ParseException e){
e.printStackTrace();
System.out.println("你输入的格式有误,请重新输入");
step = 3;
}
}else if(5 == step){
godness.setEmail(in);
System.out.println("请输入女神的[手机号]");
}else if(6==step){
godness.setMobile(in);
try{
action.add(godness);
System.out.println("新增女神成功");
step = 1;
prenious = null;
}catch(Exception e){
e.printStackTrace();
System.out.println("新增女神失败");
}
}
if(OPERATION_ADD.equals(prenious)){
step++;
}

} else {
System.out.println("你输入的值为:" + in);
}

}
}
}慕课网视频链接:http://www.imooc.com/learn/157
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java JDBC MVC