发表于: 2018-03-31 22:21:11

2 471


今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了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类











返回列表 返回列表
评论

    分享到