JDBC新手必会
jdbc是什么
java连接数据库 java database connectivity
jdbc的本质是什么
是sun公司提供的一套接口
接口都有调用者和实现者
面向接口调用 面向接口写实现类 这都属于面向接口编程
为什么要面向接口编程
解耦合:降低程序的耦合度 提高程序的可扩展力
多台机制就是非常典型的面向抽象编程(是面向具体编程)
建议以后写也用多态机制 父类型的引用指向子类型的对象
jdbc使用流程
java程序员面向接口编程 》 调用jdbc接口 》 数据库厂家java程序员提供的负责编写jdbc接口的实现类(一些.class文件)就是各种(mysql/Oracle)驱动
什么是驱动
所有的数据库驱动都是以jar包的形式存在 jar包中有很多的.class文件 这个文件就是对jdbc接口的实现 驱动不是sun公司提供的 是各大数据库厂家负责提供 下载驱动jar包需要去数据库官网下载
JDBC编程六步
第一步:注册驱动
作用:告诉java程序员 即将连接的是哪个品牌的数据库
方法:
class.forName("com.mysql.cj.jdbc.Driver");
第二步:获取连接
表示JVM的进程和数据库进程之间的通道已经打开 这属于进程之间的通信属于重量级别的 使用完记得关闭
String url=””
String user=”root”
String pas = “123456”;
Conn= DriverManager.getConnection(url,user,pas);
第三步:获取数据库操作的对象
专门执行sql语句的地方
String sql = “select * from login where username = ? and userpas = ?”;
Ps = conn.prepareStatment(sql);
Ps.SetString(1,username);
Ps.SetString(2,usrepas);
Rs = ps.ExcuteQuery();
//这是标准写法
Stmt = conn.Statement()
第四步:执行SQL语句
int count = stmt.excuteupdate(sql);//当代码执行增删改时使用
第五步:处理查询结果
注意:这一步是仅限于第四部是查询操作使用
Rs=stmt.excutequery(sql);
While(rs.next()){
String username = rs.getString(1);
String userpas = rs.getString(2);
System.out.println(username + userpas);
}
第六步:释放资源
使用完资源后一定要关闭资源 java和数据库之间的通信,开启一定要关闭
Try{
If(rs!=null){
Rs.close();
}
}catch(Exception e){
E.printStacktrace();
}
statement and preparestatement区别
1.statement存在SQL注入问题,preparestatement解决了这个问题
2.statement编译一次 执行一次 preparestatement编译一次执行N次
3.preparestatement会在编译阶段做类型的安全检查
4.综上:preparestatement使用多
事务提交
jdbc中的事务是自动提交的 是什么自动提交:
只要执行任意一条dml语句 就会自动提交一次 只是jdbc默认的事务行为
但是在实际业务过程中 通常是N条数据共同联合才能完成 必须保证这些dml语句在同一个事务中同时完成或者同时失败