发表于: 2018-03-31 22:21:11
2 470
今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin)
明天计划的事情:(一定要写非常细致的内容)
遇到的问题:(遇到什么困难,怎么解决的)
收获:(通过今天的学习,学到了什么知识)
今天完成的事情:1.了解了jdbc的基本概念和jdbc template的区别:
JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
而多的这个template,就是模板,是Spring框架为我们提供的所以JDBCTemplate就是Spring对JDBC的封装,通俗点说就是Spring对jdbc的封装的模板
JDBC的原理就是通过Connection这个类获取数据库的连接然后通过PreparedStatement类处理SQL语句,再通过它的.setObject方法传入数据,
最后通过方法.executeUpdate()和.executeQuery()执行更新,这就是JDBC的基本原理而JDBCTemplate帮我们省去了很多麻烦.
2.实际操作了Java MySQL 连接 ,初步了解了具体步骤
这里是我今天遇到的第一个问题:书写格式没差,但是漏掉了导入java.sql.connection包
这个是我遇到的第二个问题:当我导完包后,一点调试按钮,编译器马上报错。
Establishing SSL connection without server's identity verification is not recommended.然后我就百度了下他说的意思:
符合现有的应用程序不使用SSL的verifyservercertificate属性设置为“false”。你需要显式禁用SSL设置usessl = false,或设置usessl =真实提供服务器证书验证信任库。 这貌似是说要关掉一个叫SSL的东西,然后设为false?我也不是很懂,然后又去网上查了一些别人的代码,大多人在url地址后面加上了一个
?useSSL=false 的标识。顺便查了下url格式是什么。 url: jdbc:mysql:// ip://3306//数据库名称 连接MySQL的专用协议是jdbc:mysql: ,本地数据库ip地址是127.0.0.1 ,然后固定端口是3306,最后加上的就是你的数据库名称。 嗯
package zhj.jdbc.test;
import java.sql.*;
/**
* Created by msi-pc on 2018/3/31.
*/
public class Test1 {
//MySQL驱动包名
private static final String DRIVER_NAME = "com.mysql.jdbc.Driver";
private static final String URL = "jdbc:mysql://localhost:3306/enrolment?useSSL=false";
private static final String USER_NAME = "root";
private static final String PASSWORD = "19971015";
public static void main (String[] args){
Connection connection = null;
PreparedStatement preparedStatement = null;
try {
//加载mysql的驱动类
Class.forName(DRIVER_NAME);
//获取数据库连接
connection = DriverManager.getConnection(URL, USER_NAME, PASSWORD);
//mysql查询语句
String sql = "SELECT * FROM student";
PreparedStatement prst = connection.prepareStatement(sql);//结果集 ResultSet rs = prst.executeQuery();
while (rs.next()) {
System.out.println("用户名:" + rs.getString("name"));
}
rs.close();
prst.close();
} catch (Exception e) {
e.printStackTrace();
}finally { //关闭数据库,数据库连接有限
// 先关闭Statement
if (preparedStatement != null)
try {
preparedStatement.close();
} catch (SQLException e) {
e.printStackTrace();
}//再关闭connection
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
我对ResultSet和DriverManager不是很了解,于是查了一下。
ResultSet:结果集,封装了使用JDBC进行查询的结果
* 1.调用Statement对象的excuteQuery(sql)方法可以得到结果集
* 2.ResultSet返回的实际上就是一张数据表,有一个指针
* 指向数据表的第一样的前面,可以调用next()方法检测下一行是否有效,若有效则返回true
* ,并且指针下移,相当于迭代器对象的hasNext()和next()的结合体
* 3.当指针对位到确定的一行时,可以通过调用getXxx(index)或者getXxx(columnName)
* 获取每一列的值,例如:getInt(1),getString("name")
* 4.ResultSet当然也需要进行关闭
我的理解:所以结果集是一个接口,是要被一个具体方法才能调用的,而它返回值是一个表
DriverManager是驱动的管理类
* 1).可以通过重载的getConnection()方法获取数据库连接,较为方便
* 2).可以同时管理多个驱动程序:若注册了多个数据库连接
* ,则调用getConnection()方法时传入的参数不同,即返回不同的数据库连接
*使用Drivermanager的好处:可以加载多个驱动
DriverManager是一个类,它的主要方法是getConnection()方法,与数据库连接
关于java和MySQL的连接步骤我大致理解为:
1.给项目导JAR包(每个项目都要来一次?)
2.初始化驱动
3.建立connection
4.拿到statement语句执行sql语句调用execute
5.关闭数据库先关闭Statement后关闭Connection >>>>网上查了一下,说这个关闭的方法比较冗杂,可以采用使用try-with-resource的方式自动关闭连接 ?
但是关于Java里面的try catch IO异常处理方面的我暂时还没学到,所以有点疑惑ORZ 打算去搞一下,嗯
明天计划的事情:
1.继续学习熟悉jdbc流程
2.学习java异常处理
遇到的问题:
1. useSSL=false 的标识是什么意思?
2. try catch IO异常处理需要重点学习掌握吗,有没有什么好的学习它的方法(因为我看词汇有些挺长要背的感觉)?
3.如果我要插入多条(比如100条)数据,用PrepareStatement接口执行是用executeUpdate语句而不是execute吧,但是这样就不方便用for语句了?还是这种只能用 CreateStatement接口执行execute语句?
收获:
1.学习了运用jdbc让java和MySQL 连接的步骤和操作
2.了解了几个接口比如Statement,ResultSet和DriverManager类
评论