java jdbc操作数据库通用代码
1.准备工作
1》
新建一个配置文件,名为jdbc.properties将其放入src中
2》在项目中导入jdbc驱动,注意连接不同的数据库,所用到的驱动是不一样的,这些在网上都能找到
具体导入jar的方法,请参照http://blog.csdn.net/mazhaojuan/article/details/21403717
2、代码
1 import java.io.InputStream; 2 import java.sql.Connection; 3 import java.sql.DriverManager; 4 import java.sql.ResultSet; 5 import java.sql.SQLException; 6 import java.sql.Statement; 7 import java.util.Properties; 8 9 public class Main { 10 public static void main(String[] args) { 11 DBUtil dbUtil = new DBUtil(); 12 dbUtil.R("select * from table"); 13 } 14 } 15 16 class DBUtil{ 17 /** 18 * 得到数据库连接 19 * @return 20 * @throws Exception 21 */ 22 public Connection getConnection() throws Exception{ 23 //1.创建配置文件并得到对象输入流 24 InputStream is = this.getClass().getClassLoader().getResourceAsStream("jdbc.properties"); 25 //2.创建propetities 26 Properties jdbc = new Properties(); 27 jdbc.load(is); 28 //3. 通过key-value 的方式得到对应的值 29 String driver = jdbc.getProperty("driver"); 30 String url = jdbc.getProperty("url"); 31 String user = jdbc.getProperty("user"); 32 String password = jdbc.getProperty("password"); 33 //4.加载运行时类对象 34 Class.forName(driver); 35 //5通过DriverManager得到连接 36 Connection connection = DriverManager.getConnection(url,user,password); 37 return connection; 38 39 } 40 /** 41 * 释放资源的方法 42 * @param connection 43 * @param statement 44 * @param resultSet 45 */ 46 public void release(Connection connection,Statement statement,ResultSet resultSet){ 47 try { 48 if(resultSet!=null){ 49 resultSet.close(); 50 } 51 } catch (SQLException e) { 52 e.printStackTrace(); 53 } 54 try { 55 if(statement!=null){ 56 statement.close(); 57 } 58 } catch (SQLException e) { 59 e.printStackTrace(); 60 } 61 try { 62 if(connection!=null){ 63 connection.close(); 64 } 65 } catch (SQLException e) { 66 e.printStackTrace(); 67 } 68 69 } 70 /** 71 * 查询数据库的方法 72 * @param sql 字符串,要执行的sql语句 如果其中有变量的话,就用 ‘"+变量+"’ 73 */ 74 public void R(String sql){ 75 Connection connection = null; 76 Statement statement = null; 77 ResultSet resultSet = null; 78 try { 79 connection = getConnection(); 80 statement = connection.createStatement(); 81 resultSet = statement.executeQuery(sql); 82 while(resultSet.next()!=false){ 83 //这里可以执行一些其他的操作 84 System.out.println(resultSet.getString(1)); 85 } 86 } catch (Exception e) { 87 e.printStackTrace(); 88 }finally { 89 release(connection, statement, resultSet); 90 } 91 } 92 /** 93 * 数据库记录增删改的方法 94 * @param sql 字符串,要执行的sql语句 如果其中有变量的话,就用 ‘"+变量+"’ 95 */ 96 public void CUD(String sql){ 97 Connection connection = null; 98 Statement statement = null; 99 int result = 0; 100 try { 101 connection = getConnection(); 102 statement = connection.createStatement(); 103 result = statement.executeUpdate(sql); 104 105 //这里可以根据返回结果(影响记录的条数) 进行判断,该语句是否执行成功 106 System.out.println(result); 107 } catch (Exception e) { 108 e.printStackTrace(); 109 }finally { 110 release(connection, statement, null); 111 } 112 } 113 114 }
3.预处理,其中上面的连接数据库及释放资源的方法不动
代码如下:
1 import java.io.InputStream; 2 import java.sql.Connection; 3 import java.sql.DatabaseMetaData; 4 import java.sql.DriverManager; 5 import java.sql.PreparedStatement; 6 import java.sql.ResultSet; 7 import java.sql.ResultSetMetaData; 8 import java.sql.SQLException; 9 import java.sql.Statement; 10 import java.util.Properties; 11 12 public class Main { 13 public static void main(String[] args) { 14 15 } 16 } 17 18 class DBUtil{ 19 /** 20 * 得到数据库连接 21 * @return 22 * @throws Exception 23 */ 24 public Connection getConnection() throws Exception{ 25 //1.创建配置文件并得到对象输入流 26 InputStream is = this.getClass().getClassLoader().getResourceAsStream("jdbc.properties.txt"); 27 //2.创建propetities 28 Properties jdbc = new Properties(); 29 jdbc.load(is); 30 //3. 通过key-value 的方式得到对应的值 31 String driver = jdbc.getProperty("driver"); 32 String url = jdbc.getProperty("url"); 33 String user = jdbc.getProperty("user"); 34 String password = jdbc.getProperty("password"); 35 //4.加载运行时类对象 36 Class.forName(driver); 37 //5通过DriverManager得到连接 38 Connection connection = DriverManager.getConnection(url,user,password); 39 return connection; 40 41 } 42 /** 43 * 释放资源的方法 44 * @param connection 45 * @param statement 46 * @param resultSet 47 */ 48 public void release(Connection connection,Statement statement,ResultSet resultSet){ 49 try { 50 if(resultSet!=null){ 51 resultSet.close(); 52 } 53 } catch (SQLException e) { 54 e.printStackTrace(); 55 } 56 try { 57 if(statement!=null){ 58 statement.close(); 59 } 60 } catch (Exception e) { 61 // TODO: handle exception 62 } 63 try{ 64 if(connection!=null){ 65 connection.close(); 66 } 67 } catch (SQLException e) { 68 e.printStackTrace(); 69 } 70 71 } 72 /** 73 * 查询数据库的方法 74 * @param sql 字符串,要执行的sql语句 如果其中有变量的话,就用 ‘"+变量+"’ 75 */ 76 public void R(String sql, Object ...args){ 77 Connection connection = null; 78 PreparedStatement preparedStatement = null; 79 ResultSet resultSet = null; 80 try { 81 connection = getConnection(); 82 preparedStatement = connection.prepareStatement(sql); 83 for (int i = 0; i < args.length; i++) { 84 preparedStatement.setObject(i+1, args[i]); 85 } 86 resultSet = preparedStatement.executeQuery(); 87 ResultSetMetaData resultSetMetaData = resultSet.getMetaData(); 88 int columnCount = resultSetMetaData.getColumnCount(); 89 while(resultSet.next()!=false){ 90 //这里可以执行一些其他的操作 91 for (int i = 1; i <= columnCount; i++) { 92 System.out.println(resultSet.getString(i)); 93 } 94 } 95 } catch (Exception e) { 96 e.printStackTrace(); 97 }finally { 98 release(connection, preparedStatement, resultSet); 99 } 100 } 101 /** 102 * 数据库记录增删改的方法 103 * @param sql 字符串,要执行的sql语句 如果其中有变量的话,就用 ‘"+变量+"’ 104 */ 105 public void CUD(String sql, Object ...args){ 106 Connection connection = null; 107 PreparedStatement preparedStatement = null; 108 int result = 0; 109 try { 110 connection = getConnection(); 111 preparedStatement = connection.prepareStatement(sql); 112 for (int i = 0; i < args.length; i++) { 113 preparedStatement.setObject(i+1, args[i]); 114 } 115 result = preparedStatement.executeUpdate(); 116 //这里可以根据返回结果(影响记录的条数)进行判断,该语句是否执行成功 117 System.out.println(result); 118 } catch (Exception e) { 119 e.printStackTrace(); 120 }finally { 121 release(connection, preparedStatement, null); 122 } 123 } 124 125 }
在预处理代码第87行使用了元数据获取集合中的列的数量 有关数据库 元数据,请参考文档上的相关接口:
DatabaseMetaData
ResultSetMetaData
注:本文为原创,如需转载请注明出处:http://www.cnblogs.com/zhuchenglin/p/7919803.html