数据库
首页 > 数据库> > Java数据库通用操作类的代码

Java数据库通用操作类的代码

作者:互联网

        Java操作数据库主要有以下三个步骤:1)查找数据库驱动;2)生成Connection对象;3)生成Statement对象,然后使用Statement对象进行数据库的增删改查操作。为了更加方便使用,对上述操作进行封装,增删改三个操作封装为update方法,参数为标准的SQL语句,返回值为boolean类型;查询封装为query方法,方法的参数也为标准的查询SQL语句,返回为记录集ResultSet;单独编写initialize方法实现配置文件读取,Connection对象生成,Statement生成等操作,并将initialize()方法与类的构造函数合并,即一生成类对象即完成初始化操作;close()方法实现了对数据资源回收工作,值得注意的是在初始化操作时,是先生成Connection对象,再生成Statement对象,而关闭时是先关闭Statement对象再关闭Connection对象,这一点一定要注意。

        数据库类中可能发生变化的内容:数据库驱动,url,用户名和密码,单独在配置文件中,防止发生变化时需要修改和重新编译代码。

        配置文件内容如下:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
username=root
password=test

        具体DBProcess.java的代码如下:

package edu.sgit.db;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;
/*
 * 表名:test
 * id       int 自增
 * username varchar(50)
 * password varchar(50)
 * 
 */
//insert into test(username,password) 
//	               values('admin','111');
//update test set password='222' where id=1
//update test set password='222' where username='admin'
//delete from test where id=1;
// delete from test where username='admin'
// select * from test where username='admin'
public class DBProcess {
	private Connection conn = null;
	private Statement  stmt = null;
	
	public DBProcess(){
		initialize();
	}
	
	public void initialize(){
		try{
			String driver="";//数据库驱动类
			String url="";
			String username="";
			String password="";
			
			//读配置文件,获取,driver,url,username,password
			InputStream in = this.getClass().getResourceAsStream("prop.properties"); //字节流
			Properties prop = new Properties(); 
			try {
			   prop.load(in); 
			} catch (IOException e) { 
			   e.printStackTrace(); 
			} 
			driver = prop.getProperty("driver");
			url=prop.getProperty("url");
			username = prop.getProperty("username");
			password = prop.getProperty("password");
			
			//1.查找数据库驱动
			Class.forName(driver);//查找数据库驱动
			//2.建立数据库连接,并生成相应的连接对象
			conn = DriverManager.getConnection(url,username,password);//建立数据库连接
			//3.生成数据库操作对象stmt
			stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
		}catch(Exception ex){
			ex.printStackTrace();
		}
	}
	
	
	//在数据表中添加,修改,删除一条记录
	public boolean update(String sql){
		try{
			//添加
			//insert into test(username,password) 
            //  values('admin','111');
			//修改数据库记录
			//update test set password='222222' where id=1,
			//删除记录
			//sql = "delete from test where id=8"
			stmt.executeUpdate(sql);
			return true;
		}catch(Exception ex){
			ex.printStackTrace();
			return false;
		}
	}
	
	//查询结果
	//sql ="select * from test"
	public ResultSet query(String sql){
		try{			
			return stmt.executeQuery(sql);
		}catch(Exception ex){
			ex.printStackTrace();
			return null;
		}
	}
	
	public void close(){
		try{
		if(stmt!=null)
			stmt.close();
		if(conn!=null)
			conn.close();
		}catch(Exception ex){
			ex.printStackTrace();
		}
	}
}


测试代码:

package edu.sgit.test;

import java.sql.ResultSet;

import edu.sgit.db.DBProcess;

public class DBTest {

	public static void main(String[] args) {
		/*
		
		+--------+--------------+------+-----+---------+----------------+
		| Field  | Type         | Null | Key | Default | Extra          |
		+--------+--------------+------+-----+---------+----------------+
		| Id     | int(11)      | NO   | PRI | NULL    | auto_increment |
		| title  | varchar(100) | YES  |     | NULL    |                |
		| msg    | text         | YES  |     | NULL    |                |
		| inDate | datetime     | YES  |     | NULL    |                |
		| count  | int(11)      | YES  |     | 0       |                |
		+--------+--------------+------+-----+---------+----------------+
				 * */
		DBProcess db = new DBProcess();
		//add
		String title="abc";
		String msg="msg_0001";
		String date="2020-09-20 10:45:23";
		int count=100;
		int id=8;
		
		//如果字段是字符,变量前后加'',如果字段是数值类型,不加单引号
		//title:'aaa0000'
		//count:100
		String sql0="insert into msg(title,msg,inDate,count) values('abc','msg_0001','2020-09-20 10:45:23',100)";
		
		String sql1="insert into msg(title,msg,inDate,count) values('";
		sql1 = sql1 + title +"','";
		sql1 = sql1 + msg +"','";
		sql1 = sql1 + date +"',";
		sql1 = sql1 + count +")";
		System.out.println(sql1);
		
		boolean flag = db.update(sql1);
		if(flag) {
			System.out.println("add ok!");
		}else {
			System.out.println("add error!");
		}
		
		//update
		sql1 ="update msg set title='";
		sql1 = sql1+title+"' where id="+id;
		flag = db.update(sql1);
		if(flag) {
			System.out.println("udpate ok!");
		}else {
			System.out.println("udpate error!");
		}
		
		
		//delete
		sql1 ="delete from msg where id="+id;
		flag = db.update(sql1);
		if(flag) {
			System.out.println("delete ok!");
		}else {
			System.out.println("delete error!");
		}
		
		//query
		sql1 ="select * from msg";
		ResultSet rs = db.query(sql1);
		try {
			while(rs.next()) {
				System.out.print(rs.getInt("id"));
				System.out.print("\t");
				System.out.print(rs.getString("title"));
				System.out.print("\t");
				System.out.print(rs.getString("msg"));
				System.out.print("\t");
				System.out.print(rs.getString("inDate"));
				System.out.print("\t");
				//System.out.print(rs.getInt("count"));
				//System.out.print("\n");
			}
		}catch(Exception ex) {
			ex.printStackTrace();
		}

	}

}

标签:Java,sql1,数据库,System,msg,test,password,代码,out
来源: https://blog.51cto.com/u_2768919/2731566