java连接数据库 java database connectivity
是sun公司提供的一套接口
接口都有调用者和实现者
面向接口调用 面向接口写实现类 这都属于面向接口编程
解耦合:降低程序的耦合度 提高程序的可扩展力
多台机制就是非常典型的面向抽象编程(是面向具体编程)
建议以后写也用多态机制 父类型的引用指向子类型的对象
java程序员面向接口编程 》 调用jdbc接口 》 数据库厂家java程序员提供的负责编写jdbc接口的实现类(一些.class文件)就是各种(mysql/Oracle)驱动
所有的数据库驱动都是以jar包的形式存在 jar包中有很多的.class文件 这个文件就是对jdbc接口的实现 驱动不是sun公司提供的 是各大数据库厂家负责提供 下载驱动jar包需要去数据库官网下载
作用:告诉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()注意:这一步是仅限于第四部是查询操作使用
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(); }1.statement存在SQL注入问题,preparestatement解决了这个问题
2.statement编译一次 执行一次 preparestatement编译一次执行N次
3.preparestatement会在编译阶段做类型的安全检查
4.综上:preparestatement使用多
jdbc中的事务是自动提交的 是什么自动提交:
只要执行任意一条dml语句 就会自动提交一次 只是jdbc默认的事务行为
但是在实际业务过程中 通常是N条数据共同联合才能完成 必须保证这些dml语句在同一个事务中同时完成或者同时失败