发表于: 2017-10-22 21:10:51
1 697
day5
今日完成
在网上找了教程,想在IDEA中通过JDBC来连接数据库,并对数据库进行操作。
jdbc连接数据库的具体步骤:
1.如果要使用数据库就要事先添加jar程序驱动包
2.加载驱动程序
Class.forName(“com.mysql.jdbc.Driver”);
3.获得数据库连接
通过DriverManager工具类中的getConnection方法,DriverManager类:管理JDBC驱动服务类,主要功能是获取Connection对象。
Connection c=DriverManager.getConnection(url,username,passward);
url,username,password参数都是String字符串。
其中username和password就是Mysql的用户名和密码。url:数据库地址。
在Mysql中是:jdbc:mysql://主机:端口/数据库名?参数的形式。
String url = "jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=UTF-8";
4.通过Connection创建Statement对象
Connection类: 代表数据库连接,要想访问数据库,必须先获得数据库连接
通过connection类中的createStatement方法,创建Statement对象
Statement st = conn.createStatement();
5.通过Statement类中的excuteQuery或excuteUpdate方法,执行sql语句。CRUD等操作,返回一个ResultSet对象。
String sql =
"SELECT name FROM student WHERE id = 1";
ResultSet rs = st.excuteQuery(sql);
6.ResultSet操作结果集
从结果集中获取数据
数据在结果集rs中的存放方式:类似于表格的形式,初始游标指向表头。
要获取数据时,通过rs.next()方法,令游标指向下一行,然后通过rs.get*(*)方法获取该行的数据。
getXxx()方法:获取当前游标指向的这条记录中的列数据。如:getInt(),getString(),getDate(),getDouble()等。
当存在下一行时,rs.next()返回true,否则返回false。
所以rs.next()的返回值可以作为遍历结果集rs时的循环条件。
获取数据的方法:
(1)getInt("列名"),getString("列名")……
(2)getObject("列名")
通过ResultSet类中的方法获取rs中的数据:
String name = null;
while(rs.next()) {
name = rs.getString("name");
}
7.释放资源
与创建资源顺序相反,注意要放在finally中。
释放rs:rs.close();
释放st:st.close();
关闭数据库链接:conn.close();
先关闭statement,再关闭connection
遇到的问题
1.不知道为什么,rs和st放在finally中就是红色的,找不到。放在try里面就没事。
2.如图的catch语句会报异常
当我将catch语句注释掉就好了,搞不懂。
3.这个异常的意思是sql语法错误吧,但是语法应该没错啊
明日计划
希望明天能将JDBC这些疑惑搞定,然后学习jdbctemplate
收获
学习了Java通过jdbc连接数据库的具体步骤,但是有很多细节还没有搞懂,明天继续。
评论