数据库操作类
对于JDBC操作数据库步骤:
1.导入驱动包
2.加载驱动(对于mysql数据库,则是Class.forName("com.mysql.jdbc.Driver"),对于sql serverl数据库,则是Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"))
不清楚驱动类,可以到jar包找找类似"Driver"字样,就能找到。
3.获得Connection
4.获得Statement或PreparedStatement,执行executeUpdate()和executeQuery()方法,返回结果集ResultSet或影响行数int。
5.进行关闭操作,关闭ResultSet,关闭Statement,关闭Connection。
第2步一次就够了,第3.4.5步循环操作,所以操作类只实例一次时,不要将第三步放到放到构造方法中。
连接参考例子:
例子1(mysql书写格式):
private static final String dbURL="jdbc:mysql://localhost:3306/test?user=root&password=admin&useUnicode=true&characterEncoding=utf-8";
this.conn=DriverManager.getConnection(dbURL);
例子2(mysql书写格式):
private static final String dbURL="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8";
private static final String user="root";
private static final String password="admin";
this.conn=DriverManager.getConnection(dbURL, user, password);
例子3(sql server书写格式):
private static final String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=db_test;user=sa;password=123456";
this.conn=DriverManager.getConnection(dbURL);
通过properties文件连接:
首先写好ConnDB.properties文件:
1 dbClassName=com.mysql.jdbc.Driver
2 dbURL=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
3 dbUser=root
4 dbPassword=admin
然后再编写代码:
1 package com; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.sql.Connection; 6 import java.sql.DriverManager; 7 import java.sql.SQLException; 8 import java.util.Properties; 9 10 public class ConnDB { 11 private Connection conn; 12 public Properties prop=new Properties(); 13 public String dbClassName; 14 public String dbURL; 15 public String dbUser; 16 public String dbPassword; 17 public ConnDB(){ //getClass.getResourceAsStream()得到资源流 18 InputStream in=getClass().getResourceAsStream("../ConnDB.properties");//../ConnDB.properties为资源的相对路径 19 try { 20 prop.load(in);//加载 21 } catch (IOException e) { 22 e.printStackTrace(); 23 } 24 dbClassName=prop.getProperty("dbClassName");//getProperty方法取得值 25 dbURL=prop.getProperty("dbURL"); 26 dbUser=prop.getProperty("dbUser"); 27 dbPassword=prop.getProperty("dbPassword"); 28 try { 29 Class.forName(dbClassName); 30 } catch (ClassNotFoundException e) { 31 e.printStackTrace(); 32 } 33 } 34 public void getConnection(){ 35 try { 36 this.conn=DriverManager.getConnection(dbURL,dbUser,dbPassword); 37 } catch (SQLException e) { 38 e.printStackTrace(); 39 } 40 } 41 }
PreparedStatement和Statement
PreparedStatement和Statement都有executeQUery()方法和executeUpdate()方法,分别表示对数据库的查询操作和添加、删除、修改操作。都是它们的用法有所不同。
Statement:
1 public int executeUpdate(String sql){
2 int flag=0;
3 getConnection();
4 try {
5 stmt=conn.createStatement();
6 flag = stmt.executeUpdate(sql);
7 } catch (SQLException e) {
8 e.printStackTrace();
9 }
10 return flag;
11 }
调用时,传的是sql语句。
PreparedStatement:
1 public int executeUpdate(String sql,Object[] parms){
2 getConnection();
3 int flag=0;
4 try {
5 PreparedStatement pstm=conn.prepareStatement(sql);
6 for(int i=0;i<parms.length;i++){
7 pstm.setObject(i+1,parms[i] );
8 }
9 flag=pstm.executeUpdate();
10 } catch (SQLException e) {
11 e.printStackTrace();
12 }
13 return flag;
14 }
调用时:
1 String sql="insert tb_user values(?,?,?,?) ";
2 Object[] parms=new Object[]{1,"李鹏生","男",23};
3 c.executeUpdate(sql, parms);
excuteQuery()同理。