JDBC概述
JDBC是代表一组API,一个独立于特定数据管理系统,通用的SQL数据库存取和操作的公共接口,那么java代码中就通过驱动+接口+标准的sql语句实现和各种数据库的连接和操作。
开发步骤
1、把驱动jar包引入到项目中去
<1>Build Path->Configure Build Path->Libraries->Add External JARS->选中...->ok
<2>New Folder->赋值jar包到该目录下->右键 Build To Path
2、编写JDBC代码
-
注册驱动
-
获取连接,即登陆
-
传sql,执行sql
-
关闭连接(数据流和socket)
3版本问题
-
新版本JDBC8.0的连接方式与旧版本不同,注册驱动不一样,url不一样
-
sql语句分为查询和更新两种操作,对应的返回值类型不一样
-
利用PreparedStatement解决Statement的拼接、注入、bolg类型的问题
-
利用PreparedStatement批处理操作,注意在url后加(&)参数:rewriteBathchStatements=true
public class TestJDBC {
public static void main(String[] args) throws Exception {
//1、注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// Class.forName("com.mysql.jdbc.Driver");
//2、获取连接,即登陆
//协议:子协议://主机地址:端口号/文件路径
String url = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC&rewriteBathchStatements=true";
String user = "root";
String password = "111111";
Connection con = DriverManager.getConnection(url,user,password);
//3、传sql,执行sql
//sql的查询方式分为Update和Query
Statement st = con.createStatement();
//<1>Qyery
String sql = "SELECT * FROM employees;";
ResultSet res = st.executeQuery(sql);
while(res.next()) {
int id = res.getInt(1);//根据序号取结果
String name = res.getString(2);
int age = res.getInt(3);
System.out.println("id: "+ id + ",name: "+ name +",age: " +age );
}
//<2>Update
sql = "UPDATE employees SET NAME = 'wanfei' WHERE NAME ='kangdong';";
int len = st.executeUpdate(sql); //更新了多少行
System.out.println(len>0?"更新成功!":"更新失败");
sql = "INSERT INTO employees VALUES(?,?,?);";
PreparedStatement pst = con.prepareStatement(sql);//对sql数据进行预编译
//批处理
for(int i = 0;i<20;i++) {
pst.setObject(1, i+3);
pst.setObject(2, "afei"+i);
pst.setObject(3, i);
pst.addBatch();
}
int[] resSet= pst.executeBatch();
for (int i : resSet) {
System.out.println(i>0?"success":"fail");
}
//4、关闭连接
pst.close();//关闭数据流
st.close();//关闭数据流
con.close();//关闭网络流socket
}
}