19-JDBC、代码优化
JDBCJava Database Connectivity,Java数据库连接 实现步骤:1、导入jar包 在项目的根目录中创建lib文件夹 将mysql-connector-java-5.1.37-bin.jar复制到lib中 数据库驱动的版本一定要和数据的版本是对应的,如果版本差距过大是会报错的。 右键点击该jar包,选择Build Path,点击Add to Build Path 2、注册驱动 Class.forName("com.mysql.jdbc.Driver"); 3、获取连接对象 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/库名","用户名","密码"); 访问本地数据库路径的简写:jdbc:mysql:///库名 4、编写SQL语句 Statement state = conn.createStatement(); 6、执行SQL语句 state.executeUpdate(sql) 实现增删改 state.executeQuery(sql) 实现查询 7、处理执行结果 如果是增删改,判断是否执行成功 executeUpdate方法返回int,用于判断增删改影响的记录数 如果是查询,获取结果集 executeQuery方法返回ResultSet结果集,查询得到的结果被封装在了这个结果集中。 需要遍历集合来获取所有查询的结果 使用方法: 1、next():判断是否有下一个可以获取的查询结果,返回布尔值 2、getXxx(int):在指定的记录中,通过字段的位置获取字段值 3、getXxx(String):在指定的记录中,通过字段名获取字段值 代码: ResultSet set = state.executeQuery(); while(set.next()){ set.getXxx(int/String); } 8、释放资源 if(conn != null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } if(state !=null){ try { state.close(); } catch (SQLException e) { e.printStackTrace(); } } package jdbc; /** *增加 */ import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class TeacherShow { public static void main(String[] args) { // 1.准备动作引入jar包 Connection conn = null; Statement state = null; try { // 2.注册驱动 Class.forName("com.mysql.jdbc.Driver"); // 3. 获取连接对象 // 参数1.要访问的数据库 参数2.数据库的用户名 参数3.数据库的密码 conn = DriverManager.getConnection("jdbc:mysql:///company","root","root"); // 4.编写SQL语句 String sql = "insert into stu values (null,'ls',21)"; // 5.获取执行对象 state = conn.createStatement(); // 6.执行SQL语句 int row = state.executeUpdate(sql); // 7.处理执行结果 if (row > 0) { System.out.println("添加成功"); } else { System.out.println("添加失败"); } } catch (ClassNotFoundException e) { System.out.println("驱动包加载失败"); } catch (SQLException e) { System.out.println("数据库连接失败"); } finally { // 8.释放资源 if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } if (state != null) { try { state.close(); } catch (SQLException e) { e.printStackTrace(); } } } } } package day18作业.No1; import java.sql.*; public class HomeworkQuery { public static void main(String[] args) { //写在外面因为finally要用 Connection connection = null; Statement statement = null; ResultSet set = null; try { Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection("jdbc:mysql:///dbs","root"); statement = connection.createStatement(); set = statement.executeQuery("select * from student"); while (set.next()) { System.out.println(set.getInt(1) + " " + set.getString("sname") + " " + set.getInt(3)); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { if (set != null) { try { set.close(); } catch (SQLException e) { System.out.println("查找失败"); } } if (statement != null) { try { statement.close(); } catch (SQLException e) { System.out.println("执行失败"); } } if (connection != null) { try { connection.close(); } catch (SQLException e) { System.out.println("连接失败"); } } } } } 额外
二. PreparedStatement预编译的SQL 例如:xxx‘ or ‘1‘=‘1,来完成登录功能。 使用步骤: String sql = ""; PreparedStatement state = conn.prepareStatement(sql); 2、向SQL语句的占位符添加数据 state.setXxx(位置,数据); 例如:select * from 表名 where username = ? and password = ? state.setString(1,用户名); state.setString(2,密码); 3、执行SQL,不需要传入SQL语句 state.executeUpdate(); state.executeQuery(); 三. 数据库连接池概念:数据库连接池的本质是一个存储若干个数据库连接对象的容器(集合),用户在访问数据库时,可以直接从该容器中获取连接对象,对数据库进行操作,在使用完毕后将此连接对象归还到池中。 好处: DataSource连接池接口 一般这个接口我们不会自己去实现,都用第三方做好的jar包 步骤: 1、导入c3p0-0.9.5.2.jar和mchange-commons-java-0.2.12.jar(c3p0要依赖这个包mchange-commons-java.jar) 2、在src下配置c3p0-config.xml文件 在文件中配置: <c3p0-config> <named-config name="mypool"> <property name="drvierClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://localhost:3306/库名</property> <property name="user">root</property> <property name="password">root</property> <property name="initialPoolSize">5</property> </named-config> </c3p0-config> 3、获取连接池 DataSource ds = new ComboPooledDataSource("mypool"); 4、获取连接对象 ds.getConntion(); 5、归还连接 ds.close(); 2、druid:阿里巴巴的 步骤: 1、导入druid-1.0.9.jar 2、在项目的任意位置配置任意文件名的properties文件 在文件中配置 driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/库名 username=root password=root initialSize=5 3、使用连接池工厂创建连接池 // 专门用于读取properties文件的类 Properties pro = new Properties(); // 使用load方法将properties文件载入 pro.load(JdbcUtils.class.getClassLoader().getResourceAsStream("druid.properties")); // 使用DruidDataSourceFactory创建连接池 ds = DruidDataSourceFactory.createDataSource(pro); 4、获取连接对象 ds.getConntion(); 5、归还连接 ds.close(); QueryRunner类的使用dbutils中提供的一些工具。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |