欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

jdbc链接数据库

程序员文章站 2022-07-23 21:43:55
JDBC简介 JDBC全称为:Java Data Base Connectivity (java数据库连接),可以为多种数据库提供填统一的访问。JDBC是sun开发的一套数据库访问编程接口,是一种SQL级的API。它是由java语言编写完成,所以具有很好的跨平台特性,使用JDBC编写的数据库应用程序 ......

 

jdbc简介

jdbc全称为:java data base connectivity (java数据库连接),可以为多种数据库提供填统一的访问。jdbc是sun开发的一套数据库访问编程接口,是一种sql级的api。它是由java语言编写完成,所以具有很好的跨平台特性,使用jdbc编写的数据库应用程序可以在任何支持java的平台上运行,而不必在不同的平台上编写不同的应用程序。

 

jdbc编程步骤

(1)加载驱动程序:

  下载驱动包 : http://dev.mysql.com/downloads/connector/j/

解压,得到 jar文件。将该文件复制到java工程目录java resources/libraries/ 下,→ buildpath 。

(2)获得数据库连接

(3)创建statement对象:

(4)向数据库发送sql命令

(5)处理数据库的返回结果(resultset类)

 1 package com.baidu.emp.jdbctest;
 2 
 3 import java.sql.connection;
 4 import java.sql.drivermanager;
 5 import java.sql.resultset;
 6 import java.sql.statement;
 7 
 8 import com.mysql.jdbc.driver;
 9 /**
10  * 开始使用jdbc连接数据库
11  * @author admin
12  *
13  */
14 public class test001 {
15 
16     public static void main(string[] args) throws exception {
17 
18         /**
19          * 加载驱动
20          */
21         // 方法一:
22         /*
23          * import java.sql.drivermanager; import com.mysql.jdbc.driver;
24          */
25         // driver driver = new driver();
26         // drivermanager.registerdriver(driver);
27 
28         // 方法二:(推荐使用)
29         class.forname("com.mysql.jdbc.driver");
30 
31         /**
32          * 创建链接
33          */
34         string url = "jdbc:mysql://localhost:3306/testjdbc";
35         string user = "root";
36         string password = "root";
37         connection connection = drivermanager.getconnection(url, user, password);
38 
39         // 创建statement对象
40         statement statement = connection.createstatement();
41 
42         /**
43          * 执行sql,获取结果集
44          */
45         string sql = "select * from test01";
46         resultset result = statement.executequery(sql);
47 
48         // 遍历结果集
49         while (result.next()) {
50             string name = result.getstring("name");
51             int id = result.getint("id");
52             system.out.println(name + "\t" + id);
53         }
54 
55         /**
56          * 关闭链接,释放资源
57          */
58         result.close();
59         statement.close();
60         connection.close();
61     }
62 }

 

防止sql注入改用preparestatement

jdbc链接数据库
 1 package com.boya.emp.jdbctest;
 2 
 3 import java.sql.connection;
 4 import java.sql.drivermanager;
 5 import java.sql.preparedstatement;
 6 import java.sql.resultset;
 7 /**
 8  * sql注入,使用preparestatement对象进行预编译
 9  * @author admin
10  *
11  */
12 public class test002 {
13 
14     public static void main(string[] args) throws exception {
15 
16         /**
17          * 加载驱动
18          */
19         class.forname("com.mysql.jdbc.driver");
20 
21         /**
22          * 创建链接
23          */
24         string url = "jdbc:mysql://localhost:3306/testjdbc";
25         string user = "root";
26         string password = "root";
27         connection connection = drivermanager.getconnection(url, user, password);
28 
29         // 写sql 
30         string sql = "select * from test01 where id = ?";
31         //创建statement对象,预编译
32         preparedstatement statement = connection.preparestatement(sql);
33         //设置参数
34         statement.setint(1, 2);
35         /**
36          * 执行sql,获取结果集
37          */
38         resultset result = statement.executequery();
39 
40         // 遍历结果集
41         while (result.next()) {
42             string name = result.getstring("name");
43             int id = result.getint("id");
44             system.out.println(name + "\t" + id);
45         }
46 
47         /**
48          * 关闭链接,释放资源
49          */
50         result.close();
51         statement.close();
52         connection.close();
53     }
54 } 
view code

 

进行代码优化,设置配置文件,工具类,实现增删该查

 增加配置文件方便修改数据库,用户登录。。。

jdbc.properties(配置文件名)

1 drivername=com.mysql.jdbc.driver
2 url=jdbc:mysql://localhost:3306/testjdbc
3 username=root
4 password=root

注意写配置文件时中间不可以有空格,引号之类的

工具类:增强了代码的复用性

jdbc链接数据库
  1 package com.baidu.emp.utils;
  2 
  3 import java.io.inputstream;
  4 import java.sql.connection;
  5 import java.sql.drivermanager;
  6 import java.sql.preparedstatement;
  7 import java.sql.resultset;
  8 import java.sql.sqlexception;
  9 import java.util.properties;
 10 
 11 import org.junit.test;
 12 
 13 
 14 
 15 public class jdbcutils {
 16 
 17     static string driverclassname;
 18     static string url;
 19     static string user;
 20     static string password;
 21 
 22     static {
 23         // 创建配置文件对象
 24         properties properties = new properties();
 25         // 加载配置文件输入流
 26         inputstream inputstream = jdbcutils.class.getclassloader().getresourceasstream("jdbc.properties");
 27         // 重新加载配置文件
 28         try {
 29             properties.load(inputstream);
 30             // 获取配置文件的值
 31             driverclassname = properties.getproperty("drivername");
 32             url = properties.getproperty("url");
 33             user = properties.getproperty("username");
 34             password = properties.getproperty("password");
 35             class.forname(driverclassname);
 36 
 37         } catch (exception e) {
 38             // 抛出异常
 39             throw new runtimeexception(e);
 40         }
 41     }
 42 
 43     /**
 44      * 获取连接
 45      */
 46     @test
 47     public void testname() throws exception {
 48         
 49         system.out.println(driverclassname);
 50     }
 51     public static connection getconnection() {
 52         connection connection = null;
 53         try {
 54             connection = drivermanager.getconnection(url, user, password);
 55         } catch (sqlexception e) {
 56             // 抛出异常
 57             throw new runtimeexception(e);
 58         }
 59         return connection;
 60     }
 61 
 62     /**
 63      * 关闭链接,释放资源
 64      */
 65     public static void close(connection connection, preparedstatement statement, resultset resultset) {
 66 
 67         try {
 68             if (resultset != null) {
 69                 resultset.close();
 70             }
 71             resultset = null; // 垃圾及时清除
 72             //注意,不要弄成死循环
 73             close(connection, statement);
 74         } catch (sqlexception e) {
 75             throw new runtimeexception(e);
 76         }
 77 
 78     }
 79 
 80     /**
 81      * 增删改释放资源
 82      */
 83     public static void close(connection connection, preparedstatement statement) {
 84 
 85         try {
 86             if (connection != null) {
 87                 connection.close();
 88             }
 89                 
 90             connection = null;
 91             if (statement != null) {
 92                 statement.close();
 93             }
 94             statement = null;
 95 
 96         } catch (sqlexception e) {
 97             throw new runtimeexception(e);
 98         }
 99 
100     }
101 
102 }
view code

测试增删改查:

  1 package com.baidu.emp.jdbctest;
  2 
  3 import java.sql.connection;
  4 import java.sql.preparedstatement;
  5 import java.sql.resultset;
  6 
  7 import org.junit.after;
  8 import org.junit.before;
  9 import org.junit.test;
 10 
 11 import com.baidu.emp.utils.jdbcutils;
 12 
 13 /**
 14  * 使用jdbcutils连接数据库进行增删改查
 15  * 
 16  * @author admin
 17  *
 18  */
 19 public class test003 {
 20 
 21     // 初始化值
 22     connection connection = null;
 23     preparedstatement statement = null;
 24     resultset result = null;
 25 
 26     @before
 27     public void start() throws exception {
 28         // 创建链接
 29         connection = jdbcutils.getconnection();
 30         system.out.println("创建链接");
 31     }
 32 
 33     @after
 34     public void end() throws exception {
 35         // 关闭链接
 36         jdbcutils.close(connection, statement, result);
 37         system.out.println("关闭链接");
 38     }
 39     
 40     /**
 41      *插入数据
 42      * @throws exception
 43      */
 44     @test
 45     public void add() throws exception {
 46         string sql = "insert into test01 values(null,?)";
 47         statement = connection.preparestatement(sql);
 48         statement.setstring(1, "李四");
 49         int result = statement.executeupdate();
 50         if (result!=0) {
 51             system.out.println("添加成功");
 52         }
 53     }
 54     /**
 55      * 删除数据
 56      * @throws exception
 57      */
 58     @test
 59     public void del() throws exception {
 60         string sql = "delete from test01 where id =?";
 61         statement = connection.preparestatement(sql);
 62         statement.setint(1,3);
 63         int result = statement.executeupdate();
 64         if (result!=0) {
 65             system.out.println("删除成功");
 66         }
 67     }
 68     /**
 69      * 修改数据
 70      * @throws exception
 71      */
 72     @test
 73     public void change() throws exception {
 74         string sql = "update test01 set name = ? where id = ?";
 75         statement = connection.preparestatement(sql);
 76         statement.setstring(1, "张飞");
 77         statement.setint(2, 2);
 78         int result = statement.executeupdate();
 79         if (result!=0) {
 80             system.out.println("修改成功");
 81         }
 82     }
 83     
 84     /**
 85      * 查询全部数据
 86      * @throws exception
 87      */
 88     @test
 89     public void findall() throws exception {
 90         string sql = "select id , name from test01";
 91         statement = connection.preparestatement(sql);
 92         result = statement.executequery();
 93         if (result.next()) {
 94             system.out.println("查询成功");
 95         }
 96     }
 97     
 98     /**
 99      * 条件查询数据
100      * @throws exception
101      */
102     @test
103     public void findone() throws exception {
104         string sql = "select id , name from test01 where id = ?";
105         statement = connection.preparestatement(sql);
106         statement.setint(1, 2);
107         result = statement.executequery();
108         if (result.next()) {
109             system.out.println("查询成功");
110         }
111     }
112 
113 }

 

存在错误望各位同仁指出,非常感谢