數據庫:
create table t1(id int primary key not null auto_increment,name varchar(32),password varchar(32)); insert into t1(name,password) values('admin','123'); insert into t1(name,password) values('zhangsan','123'); insert into t1(name,password) values('lisi','123');
mySqlConnection.java代碼:
package com.dbdao.mysql; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import org.junit.Test; public class mySqlConnection { //創建數據庫驅動名稱 private static String Driver_class="com.mysql.jdbc.Driver"; //數據庫鏈接地址 private String url="jdbc:mysql://localhost:3306/test"; //數據庫用戶名 private String user="root"; //數據庫密碼 private String password="11"; //數據庫鏈接 private Connection con=null; //准備聲明sql語句 private PreparedStatement pstmt=null; //結果集 private ResultSet rs=null; //影響行數 private int i; /* * 創建驅動 * */ static{ try { Class.forName(Driver_class); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /* * 加載驅動 * */ @Test public void getConnect() { // TODO Auto-generated method stub try { con=DriverManager.getConnection(url, user, password); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } //判斷數據庫是否加載成功 if(con!=null){ System.out.println("數據庫加載成功!"); }else{ System.out.println("數據庫加載失敗!"); } } /* * 執行sql語句 * */ public void doSql(String sql,Object[] object) { // TODO Auto-generated method stub //判斷sql語句是否存在 if(sql!=null){ //加載驅動 getConnect(); //判斷object數組是否存在 if(object==null){ //如果不存在,創建一個,防止出現空指針異常 object=new Object[0]; } try { //聲明一條准備的sql語句 pstmt=con.prepareStatement(sql); //為Object對象一一賦值 for(int i=0;i<object.length;i++){ pstmt.setObject(i+1, object[i]); } //執行聲明的sql語句 pstmt.execute(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } }else{ System.out.println("sql語句並不存在!"); } } /* * 獲取結果集 * */ public ResultSet getRS(){ try { //獲取結果集方法 rs=pstmt.getResultSet(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } //返回結果集 return rs; } /* * 獲取影響行數 * */ public int getUpdateCount() { // TODO Auto-generated method stub try { //獲取影響行數方法 i=pstmt.getUpdateCount(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } //返回影響行數 return i; } /* * 關閉方法 * */ public void getClose() { // TODO Auto-generated method stub //關閉結果集 try { //結果集關閉方法 rs.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ //關閉聲明的sql語句 try { //關閉聲明的sql語句方法 pstmt.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ //卸載驅動 try { //驅動卸載方法 con.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }
package com.service; import java.sql.ResultSet; import java.sql.SQLException; import org.junit.Test; import com.dbdao.mysql.mySqlConnection; public class loginService { //導入mySqlConnection類 mySqlConnection mysqlCon=new mySqlConnection(); //准備sql語句 private String sql; //影響行數(數據變更後,影響行數都是大於0,等於0時沒變更,所以說如果變更失敗,那麼影響行數必定為負) private int i=-1; //結果集 private ResultSet rs; /* * 插入數據 * */ @Test public void insert() { // TODO Auto-generated method stub //創建sql語句 sql="insert into t1(name,password) values(?,?)"; //創建object數組 Object[] object=new Object[]{"admin","123456"}; //執行sql語句 mysqlCon.doSql(sql, object); //獲取影響行數 i=mysqlCon.getUpdateCount(); //判斷是否插入成功 if(i!=-1){ System.out.println("數據插入成功!"); }else{ System.out.println("數據插入失敗!"); } //關閉鏈接 mysqlCon.getClose(); } /* * 刪除數據 * */ @Test public void delete() { // TODO Auto-generated method stub //創建sql語句 sql="delete from t1 where id=?"; //創建object數組 Object[] object=new Object[]{3}; //執行sql語句 mysqlCon.doSql(sql, object); //獲取影響行數 i=mysqlCon.getUpdateCount(); //判斷是否刪除成功 if(i!=-1){ System.out.println("數據刪除成功!"); }else{ System.out.println("數據刪除失敗!"); } //關閉鏈接 mysqlCon.getClose(); } /* * 更新數據 * */ @Test public void update() { // TODO Auto-generated method stub //創建sql語句 sql="update t1 set password=? where name=?"; //創建Object數組 Object[] object=new Object[]{"11","admin"}; //執行sql語句 mysqlCon.doSql(sql, object); //獲取影響行數 i=mysqlCon.getUpdateCount(); //判斷數據是否更新成功 if(i!=-1){ System.out.println("數據更新成功!"); }else{ System.out.println("數據更新失敗!"); } //關閉鏈接 mysqlCon.getClose(); } /* * 遍歷數據 * */ @Test public void select() { // TODO Auto-generated method stub //創建sql語句 sql="select * from t1"; //執行sql語句 mysqlCon.doSql(sql, null); //獲取結果集 rs=mysqlCon.getRS(); //判斷結果集是否為空 if(rs!=null){ try { //將光標移動到結果集末端,注意此處不能使用rs.afterLast();否則為空值。 rs.last(); //獲取結果集行數 i=rs.getRow(); //判斷結果集是否存在 if(i>0){ //將光標移動到結果集前端 rs.beforeFirst(); //循環遍歷所有行數 while(rs.next()){ //遍歷每行元素的內容 String name=rs.getString("name"); String password=rs.getString("password"); //在控制台打印出結果 System.out.println("name:"+name+" password:"+password); } }else{ System.out.println("結果集為空!"); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } }else{ System.out.println("結果集不存在!"); } //關閉鏈接 mysqlCon.getClose(); } }