关于JDBC的部分内容的总结
1、是什么
(1)、JAVA DATABASE CONNECTIVITY ((字面意思)java与数据库的连接),是一个独立与数据库管理系统、通用的SQL数据库存储和操作的公共接口(可以理解为一组的API (应用程序接口))
2、用来干啥
(1)、用来访问数据库的标准java类
3、如何获取数据库连接
(1)、导入jar包==》加载与注册JDBC驱动(输入url user password)
连接代码:
public void testConnection5() throws Exception {//1.加载配置文件InputStream is = ConnectionTest.class.getClassLoader().getResourceAsStream("jdbc.properties");Properties pros = new Properties();pros.load(is);//2.读取配置信息String user = pros.getProperty("user");String password = pros.getProperty("password");String url = pros.getProperty("url");String driverClass = pros.getProperty("driverClass");//3.加载驱动Class.forName(driverClass);//4.获取连接Connection conn = DriverManager.getConnection(url,user,password);System.out.println(conn);}//配置文件
user=root
password=abc123
url=jdbc:mysql://localhost:3306/test
driverClass=com.mysql.jdbc.Driver
4、其中statement/PrepatedStatement的区别
使用statement会导致sql注入问题、拼串问题 以及效率比PrepatedStatement低
PrepatedStatement会存在预编译:预编译是啥?
我理解的pp预编译: 现将未填入占位符的sql语句 中的关系 做绝了 当写入数据试图去改变这种关系 会被拒绝 不会导致关系改变
pp的好处:pp可以操作blob数据 普通无法做到 有占位符是可以传流
pp可以实现跟高效的批量插入操作
5、使用PrepatedStatement进行更新/查询
更新:
用prop代替普通的statement 通用5步
1、连接数据库
2、pop预编译sql语句
3、填充占符位
4、执行sql语句
5、释放数据库 pop资源
注意一个date类型:util下的date不能直接成为sql下的date,但是两者的毫秒值是相同的 所以 可以将util的date毫秒值给sql中的date
?:占位符
啥叫预编译:在生成实例中 已经携带了sql语句
查询:
ORM编程思想:object relation mapping
对象关系映射:并非是名字的一样 可以将表的字段起javabase包的别名
一个数据表对应一个java类
表中一个记录对象java类的一个对象
表中的一个字段对应java类的一个属性
针对于表的字段名与类的属性名不一致 必须声明sql是 使用类的属性名来命名字段的别名
是有rsmd需要使用getcolumnlabel来替换getname 获取别名
说明:若果sql没有起别名 getlabel 仍然获取列名
连接 properarestatemant resurtset 都需要关闭
rsmd 获取结果集的元数据(修饰现有数据的数据) ==》元注解(修饰当前注解的注解) 通过rsmd获取列数
赋值给属性 运用反射getdecrearfile() 注意设置不检查 防止私有变量
JDBC API小结
-
两种思想
-
面向接口编程的思想
-
ORM思想(object relational mapping)
-
一个数据表对应一个java类
-
表中的一条记录对应java类的一个对象
-
表中的一个字段对应java类的一个属性
-
sql是需要结合列名和表的属性名来写。注意起别名。
-
-
两种技术
-
JDBC结果集的元数据:ResultSetMetaData
-
获取列数:getColumnCount()
-
获取列的别名:getColumnLabel()
-
-
通过反射,创建指定类的对象,获取指定的属性并赋值
-
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
