数据库连接总结
第一步:加载驱动程序(应用反射机制)
Class.forName(“com.jdbc.mysql.Driver”);
第二步:提供连接数据库的URL(协议/子协议/数据源标识/端口号/数据库名?字符编码集)
String url = "jdbc:mysql://localhost:3306/salary_manage?UseUnicoding =true&characterEncoding =utf8";
第三步:连接数据库
在连接数据之前,需要提供用户名和密码;
String user = “用户名”;
String password = “密码”
Connection conn = DriverManager.getConnection(url, user, password);
此时如果conn!=null 就表示数据连接数据库成功!
那既然连接数据库成功?我们最终的目的是为了操作数据库,那怎么样做呢?就是执行SQL语句。在执行SQL语句之前我们还需要做点事情!
第一步:建立一个Statement对象;
第二步;执行SQL语句
方法一:执行SQL静态语句,使用Statement获得实例,如:
Statement stm = (Statement) conn.createStatement();
String sql = "insert users values(null,'黄蓉','huangrong','women','2016-6-21')";
int num=stm.executeUpdate(sql);//返回一个整型
System.out.println("插入"+num+"条数据成功");
第一句语句就是获得Statement实例;
第二条语句就是sql语句
第三条就是使用executeUpdate()方法执行SQL语句。
方法二:执行动态的SQL语句,就是可以进行预编译
首先:定义失去了语句,需要设置的值都用’?‘表示。如下
String sql = "insert users values(?,?,?,?,?)";
其次,使用prepareStatement(sql)方法来获得一个PrepareStatement实例,此时会先对sql进行预编译。
其次,就是给个字段赋值如下
//设置值
pst.setInt(1, 59);
pst.setString(2, "黄小蓉");
pst.setString(3, "huangrong");
pst.setString(4, "women");
pst.setString(5, "2016-6-12");
最后,执行执行SQL语句,此时是无参的
num=pst.executeUpdate();
上面的操作可以真多insert,delete以及update,但是对于select稍微有些变化!
先看一个例子:
String sql = "select * from users ";
PreparedStatement pst = (PreparedStatement) conn.prepareStatement(sql);
ResultSet rs = (ResultSet) pst.executeQuery();
while(rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
String password = rs.getString("password");
String sex = rs.getString("sex");
String birth = rs.getString("birth");
System.out.println(id+"\t"+name+"\t"+password+"\t"+sex+"\t"+birth);
}
如上例,获得Statement实例还是一样的,只是在执行SQL语句的方法不一样,因为我们在select可能或有多个结果,所以就是使用executeQuery()返回一个结果集,而executeUpdate只是返回一个结果。最终通过结果集的next()方法判断结果集中是否还有记录,就通过字段名得到字段的的取值,最终输出!
对于不使用预编译,也是一样的。如下例:
String sql = "select * from users ";
Statement st = (Statement) conn.createStatement();
ResultSet rs = (ResultSet) st.executeQuery(sql);
while(rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
String password = rs.getString("password");
String sex = rs.getString("sex");
String birth = rs.getString("birth");
System.out.println(id+"\t"+name+"\t"+password+"\t"+sex+"\t"+birth);
}