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
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 }
进行代码优化,设置配置文件,工具类,实现增删该查
增加配置文件方便修改数据库,用户登录。。。
jdbc.properties(配置文件名)
1 drivername=com.mysql.jdbc.driver 2 url=jdbc:mysql://localhost:3306/testjdbc 3 username=root 4 password=root
注意写配置文件时中间不可以有空格,引号之类的
工具类:增强了代码的复用性
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 }
测试增删改查:
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 }
存在错误望各位同仁指出,非常感谢
上一篇: 生活迷信和愚人小笑话
下一篇: Vue实现tab选项卡