數據庫:
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();
}
}