Java之JDBCjava
今天我学习了JDBC中一部分知识mysql
下面是我对今天学习JDBC部分知识的总结:sql
JDBC的全称:Java Database Connectivity数据库
意为:Java 数据库 链接安全
这是一种执行SQL语句的API学习
数据库厂商本身实现了JDBC这套接口,咱们称之为 数据库驱动code
在java中orm
一、咱们首先须要装载驱动类.以mysql为例,代码以下server
Class.forName("com.mysql.jdbc.Driver");接口
注意,咱们必须先导入JDBC驱动jar包,jdbc驱动jar包能够在nysql官网下载,为了方便,这里提供了连接
https://dev.mysql.com/downloads/connector/j/
选择Platform Independent 而后选择下载。例如ZIP形式的下载。
而后将jar包导入到项目中便可
注意,老版的加载驱动类是com.mysql.jdbc.Driver,可是,我使用这段代码的时候,编译器报错了,并建议我换成新的驱动"com.mysql.cj.jdbc.Driver" 我认为这可能与个人jar包版本有关(个人jar包版本是8.0.11)
二、创建链接
Connection conn=null;
conn=DriverManager.getConnection(字符串参数1,字符串参数2,字符串参数3);
其中,字符串参数3是你的数据库登陆密码
字符串参数2是数据库用户名
字符串参数1是数据库的位置
老版的是这样(以本机为例)
字符串参数1:"jdbc:mysql://localhost:3306/数据库名";
字符串参数2:"root";
字符串参数3:"密码";
一样,我使用这段代码,编译器也报错了,须要我设置时区等。
所以,将字符串参数1替换为:"jdbc:mysql://localhost:3306/mysql2?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8&useSSL=false";
编译经过。
三、创建链接以后,就能够进行相关SQL语句注入了
Statement是一个接口,prepareStatement是Statement的一个子接口。因为Statement存在SQL注入的安全问题以及效率问题,所以咱们更经常使用的是PrepareStatement接口。
代码以下
PrepareStatement ps=conn.prepareStatement(sql语句);
例如
/"假设已知有一张mytable1表,字段为age,类型为int 字段为Date1,类型为Date
*/
String sql1="insert into mytable1(age,Date1) values(?,?)";
//其中的?叫作占位符。
PrepareStatement ps=conn.prepareStatement(sql1);
下面,经过调用一些方法来替换占位符
ps.setInt(1,18);
ps.setDate(2,new java.sql.Date(System.currentTimeMillis()));
//这里的Date使用的是java.sql包的
//其中setXXX方法中的第一个参数表明的是问号的位置。
/*其实,若是不知道原表中字段的类型,也可使用setObject(Index,Object obj)这个方法。简单粗暴*/
接着,调用ps.executeUpdate()方法执行那段插入语句。这个executeUpdate()方法运用于insert/delete/update语句的执行。该方法返回影响的行数,因此这里接收一下
int row=ps.executeUpdate();
这样就完成了插入操做。
若是咱们使用的是查询操做。如
String sql2="select * from mytable1";
PrepareStatement ps2=conn.prepareStatement(sql2);
而后调用executeQuery()方法执行查询语句
注意,该方法返回一个ResultSet结果集的实现类。 ResultSet是一个接口。
ResultSet set =ps2.executeQuery();
咱们能够调用next()方法。这个方法判断是否有下一个,返回布尔值。相似于游标
另外,还有getInt(int colum) getDouble(int colum)方法等等,其中colum是列数。这要求咱们必须事先知道所查询的全部列 ,某一列在第几列,是什么类型。
咱们可使用以下方法遍历
while(set.next()){
System.out.println(set.getInt(列数)+"****"+set.getDouble(列数));
}
最后,是关闭操做
关闭的顺序应该是(若是有的话)
ResultSet-->Statment-->Connection这样的关闭顺序。且必须分开写,也就是三个try catch语句
/*以上内容均为本人学习后总结,全为手打,不免有些缺漏和错误,欢迎指正或给出建议,谢谢*/