建立两个文件,一个是数据库增/删/改/查Dao通用基类BaseDao.java,一个是数据库增/删/改/查的操作mysql.java。两个文件分别在src目录下不同的【包】内,注意不在一个包内的调用方法。
一、建立数据库增/删/改/查Dao通用基类(BaseDao.java)
package Suoker.Dao;
import java.sql.*;
import suoker_web.Config_mysql;
// 操作数据库增/册/改/查的基类
public class BaseDao {
Connection connection = null;
PreparedStatement pst=null;
Statement st=null;
ResultSet rs=null;
// ======== 获取数据库连接
public boolean getconnection(){
// 读取sql.properties配置文件中jdbc.driver.class值 ##配置文件方法参考:https://blog.csdn.net/dxnn520/article/details/112615586
String driver=Config_mysql.getInstance().getString("jdbc.driver.class"); // Jdbc数据库驱动
String url=Config_mysql.getInstance().getString("jdbc.connection.url"); // 数据库名称地址
String username=Config_mysql.getInstance().getString("jdbc.connection.username"); // 数据库:用户名
String password=Config_mysql.getInstance().getString("jdbc.connection.password"); // 数据库:用户密码
try {
// 载入数据库驱动
Class.forName(driver);
// 建立数据库连接getconnection(jdbc:mysql://地址:端口号/数据库名,数据库用户名,密码)
connection = DriverManager.getConnection(url,username,password);
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
// ======== 查询数据表
public ResultSet excuteQuery(String sql,Object[] params) // 对象数组作为参数 Object[] params
{
if (this.getconnection()){
try {
pst=connection.prepareStatement(sql);
// 遍历读取Object[] params的每一个值
for(int i=0;i<params.length;i++){
pst.setObject(i+1,params[i]); // 取参数值(变量值),赋到sql语句中的?里。
}
rs=pst.executeQuery(); // 把查询结果赋值到rs中
} catch (SQLException e) {
e.printStackTrace();
}
}
return rs; // 返回查询结果
}
// ======== 增、删、改
public int excuteUpdate(String sql,Object[] params) // 对象数组作为参数 Object[] params
{
int updateRows=0; // 默认返回0,失败返回0
if(this.getconnection()){
try {
pst=connection.prepareStatement(sql);
// 遍历读取Object[] params的每一个值
for(int i=0;i<params.length;i++){
pst.setObject(i+1,params[i]); // 取参数值(变量值),赋到sql语句中的?里。
}
// ---- 类似下面的语句
// String sql="update aaa set Name=?";
// st=con.prepareStatement(sql8);
// st.setString(1,z_name); // 把变量赋值到Sql语句中,第一个问号
updateRows=pst.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
return updateRows;
}
// =========== 释放数据库连接资源
public boolean close(){
if(rs !=null)
{
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(pst != null)
{
try {
pst.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(connection != null)
{
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return true;
}
}
二、数据库增/删/改/查的操作mysql.java
package suoker_web;
import Suoker.Dao.BaseDao; //从另一个包里调用BaseDao类(数据库操作基类)
import java.sql.*;
import java.util.Date;
public class MySql {
public void getSelect()
{
BaseDao basedao=new BaseDao();
// =========== 数据库查询
// String sql="select * from aaa ";
// Object[] params={};
String name_8="张飞";
String sql="select * from aaa where Name=?";
Object[] params={name_8};
ResultSet rs_grid=basedao.excuteQuery(sql,params);
// 遍历读取Sql的数据
System.out.println("======== 查询全部 ========\n");
try {
while(rs_grid.next()){
String name=rs_grid.getString("Name");
String old=rs_grid.getString("Old");
System.out.println("姓名:"+name+" 年龄:"+old);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
}
// =========== 增加记录
System.out.println("======== 删除张飞 \n");
String sql1="INSERT INTO aaa(Name,Old) VALUES (?,?)";
Object[] params1={"张飞",30};
int s=basedao.excuteUpdate(sql1,params1);
if(s==1){
System.out.println("增加【张飞】成功!");
}else{
System.out.println("增加【张飞】失败!");
}
// =========== 删除记录
System.out.println("======== 增加张飞 \n");
String a_name="张飞";
int a_old=30;
String sql2="delete from aaa where Name=? and Old=?";
Object[] params2={"张飞",30};
int s2=basedao.excuteUpdate(sql2,params2);
if(s2==1){
System.out.println("删除【张飞】成功!");
}else{
System.out.println("删除【张飞】失败!");
}
// =========== 更新记录
System.out.println("======== 更新数据 \n");
String name_1="张飞";
String name_2="刘备";
String sql_3="update aaa set Name=? where Name=?";
Object[] params3={name_2,name_1};
// String sql_3="update aaa set Name='刘备' where Name='张飞'";
// Object[] params3={};
int s3=basedao.excuteUpdate(sql_3,params3);
if(s3==1){
System.out.println("更新【张飞】成功!");
}else{
System.out.println("更新【张飞】失败!");
}
// 关闭数据库连接
boolean aaa=basedao.close();
if(aaa!=true){
System.out.println("关闭数据库失败!");
return;
}else{
System.out.println("关闭数据库成功!");
}
}
public static void main(String[] args) {
MySql getSelect = new MySql(); // 声明当前类
getSelect.getSelect(); // 执行方法
}
}