数据库:
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');
Java代码:
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 {
//结果集关闭方法
if(rs!=null){
rs.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//关闭声明的sql语句
try {
//关闭声明的sql语句方法
if(pstmt!=null){
pstmt.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//卸载驱动
try {
//驱动卸载方法
if(con!=null){
con.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
loginService.java代码:
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();
}
}