JDBC的学习之路(一)

使用sql要配置路径

首先到官网下载 http://dev.MySQL.com/downloads/connector/

因为是java与数据库连接,所以选择 Connector/J

 download -->(mysql-connector-java-5.1.43.tar.gz)   不用登陆,鼠标下滑到底端,选择No thanks,just start my download

-----------------版本下载自己想要的就行 -------------------

 

下载之后解压

然后在所在项目右键单击

选择  

Build Path-->Configure Build Path-->Libraries界面下,选择 Add External JARs-->找到mysql-connector-java-5.1.43-bin.jar位置选中后确定,ok,即可

 

Driver接口

----Driver接口由数据库厂家提供,对于java开发者而言,只需要使用Driver接口就可以啦

----在编程中要连接数据库,必须先装载特定厂家的数据库驱动程序,不同的数据库有不同的装载方法. 这里推荐下载Navicat for MySQL绿色版.官网下载,https://navicatformysql.en.softonic.com/     解压,配置,(配置中有一项,一般选择utf-8.......)       263

----驱动就是各个数据库厂商实现的Sun公司提供的JDBC接口,即对Connection等接口的实现类的jar文件

----装载MySQL驱动

      --Class.forName("com.mysql.jdbc.Driver");

----装载Oracle驱动

      --Class.forName("oracle.jdbc.driver.OracleDriver");

 

 

 

Connection接口

----Connection与特定数据库连接(会话),在连接上下文中执行SQL语句并返回结果.

----DriverManager的getConnection()方法建立在JDBC URL中定义的数据库Connection连接上

----连接MySQL数据库:

    --Connection conn=DriverManager.getConnection("jdbc:mysql://host:port/database","user","password");

----连接ORACLE数据库:

    --Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@host:port:database","user","password");

 

 

 

 1 package com.jxust.jdbc;
 2 /**
 3  * 测试和数据库建立连接
 4 
 5  * 
 6  */
 7 import java.sql.Connection;
 8 import java.sql.DriverManager;
 9 import java.sql.SQLException;
10 
11 
12 public class Demo01 {
13 
14     //测试和数据库建立连接
15     public static void main(String[] args) {
16         Connection conn=null;
17         try {
18             //加载驱动类
19             Class.forName("com.mysql.jdbc.Driver");
20             long start=System.currentTimeMillis();
21             //建立连接(连接对象内部其实包含了Socket对象,是一个远程的连接,比较耗时,这是Connection对象管理的一个要点)
22             //在真正的开发中,为了提高效率,都会使用连接池管理连接对象
23              conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/testjdbc","root","*****");
24             long end=System.currentTimeMillis();       //主机IP     端口/数据库名     user    密码
25             System.out.println(conn);
26             System.out.println("建立连接,耗时为:"+(end-start)+"ms毫秒");
27             
28         } catch (ClassNotFoundException | SQLException e) {
29         
30             e.printStackTrace();
31         }
32         finally{
33             if(conn!=null){       //连接的关闭
34                 try {
35                     conn.close();
36                 } catch (SQLException e) {
37                     
38                     e.printStackTrace();
39                 }
40             }
41         }
42     }
43 }

 

 
 1 package com.jxust.jdbc;
 2 
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.SQLException;
 6 import java.sql.Statement;
 7 
 8 
 9 public class Demo02 {
10 
11     //测试Statement接口用法,执行SQL语句,以及SQL注入问题
12     public static void main(String[] args) {
13         Statement stmt=null;
14         Connection conn=null;
15         try {
16             //加载驱动类
17             Class.forName("com.mysql.jdbc.Driver");
18             //建立连接(连接对象内部其实包含了Socket对象,是一个远程的连接,比较耗时,这是Connection对象管理的一个要点)
19             //在真正的开发中,为了提高效率,都会使用连接池管理连接对象
20              conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/testjdbc","root","z****");
21             System.out.println(conn);
22              stmt=conn.createStatement();
23 //            String name="xiamu";
24             //传参只能采用拼字符串的形式,很容易被遭到破坏
25 //            String sql="insert into t_user(username,pwd,regTime) values('"+name+"',555,now())";
26 //            String sql="insert into t_user(username,pwd,regTime) values('xiamu',555,now())";
27 //            stat.execute(sql);
28             
29             //测试SQL注入
30             String id="5 or 1=1";
31             String sql="delete from t-user where id="+id;  //永为true,数据库数据会被恶意改动,不安全,
32 //            String sql="delete from t_user where id=5";
33             stmt.execute(sql);
34             
35         } catch (ClassNotFoundException | SQLException e) {
36         
37             e.printStackTrace();
38         }finally{
39             if(stmt!=null){                   //后开的先关
40                 try {
41                     stmt.close();
42                 } catch (SQLException e) {
43                     
44                     e.printStackTrace();
45                 }
46             }
47             if(conn!=null){
48                 try {
49                     conn.close();
50                 } catch (SQLException e) {
51                     
52                     e.printStackTrace();
53                 }
54             }
55         }
56     }
57 }

 

 1 package com.jxust.jdbc;
 2 
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.PreparedStatement;
 6 import java.sql.SQLException;
 7 
 8 /**
 9  * 测试PreparedStatement的基本用法
10  */
11 
12 //测试PreparedStatement的基本用法
13 public class Demo03 {
14 
15     
16     public static void main(String[] args) {
17         PreparedStatement ps=null;
18         Connection conn=null;
19         try {    //加载驱动类
20             Class.forName("com.mysql.jdbc.Driver");
21              conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/testjdbc","root","z****");
22             
23             /**
24              * ? 占位符,在输入对应值的时候会进行预处理,可以防止SQL注入
25              */
26             String sql="insert into t_user(username,pwd,regTime) values(?,?,?)";
27              ps=conn.prepareStatement(sql);
28 //            ps.setString(1, "happy1");  //参数索引是从1开始计算,而不是0,
29 //            ps.setString(2, "123");   //根据row的属性不懂,选择不同的setXxx方法,setDate(),setDouble();.....
30 //            ps.setString(1, "happy2");  //继续插入happy2
31 //            ps.setString(2, "12456");
32 //            ps.setDate(3, new java.sql.Date(System.currentTimeMillis()));
33             
34             //也可以使用setObject方法处理参数,避免记各个类型的烦恼
35             ps.setObject(1, "happy4");
36             ps.setObject(2, "7889");
37             ps.setObject(3, new java.sql.Date(System.currentTimeMillis()));  
38                              //java.sql.Date是java.Util.Date的子类
39             
40             
41             System.out.println("插入一行记录");
42 //            ps.execute();
43             int count=ps.executeUpdate(); //executeUpdate  运行insert/update/delete操作,返回更新行数 executeQuery()  返回结果集对象
44             System.out.println(count);
45         } catch (ClassNotFoundException | SQLException e) {
46             // TODO Auto-generated catch block
47             e.printStackTrace();
48         }finally{
49             if(ps!=null){
50                 try {
51                     ps.close();
52                 } catch (SQLException e) {
53                     e.printStackTrace();
54                 }
55             }
56             if(conn!=null){
57                 try {
58                     conn.close();
59                 } catch (SQLException e) {
60                     e.printStackTrace();
61                 }
62             }
63         }    
64     } 
65 }

 

 1 package com.jxust.jdbc;
 2 
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.PreparedStatement;
 6 import java.sql.ResultSet;
 7 import java.sql.SQLException;
 8 
 9 /**
10  * 测试ResultSet接口的基本用法
11  */
12 
13 
14 public class Demo04 {
15 /**
16  * 测试ResultSet接口的基本用法
17  * 依序关闭使用之对象及连接            ResultSet-->Statement-->Connection
18  *                           一定要分开写(如果其中一个异常,要保证下面的也关闭,嵌套写就不会有这种效果)
19  * @param args
20  */    
21     
22     public static void main(String[] args) {
23         PreparedStatement ps=null;
24         Connection conn=null;
25         ResultSet rs=null;
26         try {    //加载驱动类
27             Class.forName("com.mysql.jdbc.Driver");
28              conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/testjdbc","root","****");
29         
30             String sql="select id,username,pwd from t_user where id>?";   //select*from....是返回所有的列
31              ps=conn.prepareStatement(sql);
32             ps.setObject(1, 2); //把id大于2的记录都取出来
33             
34              rs=ps.executeQuery();
35             
36             while(rs.next()){   //Iterator式迭代,每调用一次,next移动一位,同时返回一个判断下一个是否为空的boolean值
37                 System.out.println(rs.getInt(1)+"----"+rs.getString(2)+"----"+rs.getString(3));
38             }
39             
40         } catch (ClassNotFoundException | SQLException e) {
41             // TODO Auto-generated catch block
42             e.printStackTrace();
43         }finally{
44             if(rs!=null){
45                 try {
46                     rs.close();
47                 } catch (SQLException e) {
48                     
49                     e.printStackTrace();
50                 }
51             }
52             if(ps!=null){
53                 try {
54                     ps.close();
55                 } catch (SQLException e) {
56                     e.printStackTrace();
57                 }
58             }
59             if(conn!=null){
60                 try {
61                     conn.close();
62                 } catch (SQLException e) {
63                     e.printStackTrace();
64                 }
65             }
66         }
67     } 
68 }

 

posted @ 2017-08-28 14:33  浅忆~  阅读(185)  评论(0编辑  收藏  举报