MyEclipse连接SQL

这是一个Java程序,使用DbUtils类连接并操作MySQL数据库。类中包含了获取数据库连接、创建Statement和PreparedStatement对象、执行查询和更新操作的方法。在main方法中进行了测试,通过连接查询t_student表并打印结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package database;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DbUtils {
	//driver 
	public final static String DRIVER="com.mysql.jdbc.Driver";
	public final static String URL="jdbc:mysql:127.0.0.1:3306/labtask_db";
	public final static String USER="root";
	public final static String PASSWORD="root";
	
	/**
	 * 获取连接
	 * @return
	 */
	public Connection getConn(){
		Connection conn=null;	//数据库连接
		try{
			//加载驱动:在静态初始化器中已经注册,所以调用JDBC的时候只需Class.forName(XXX);
			Class.forName(DRIVER);
			//通过驱动管理的DriverManager中的getConnection方法获得连接对象:建立数据库连接池
			conn=DriverManager.getConnection(URL, USER, PASSWORD);
		}catch(Exception e){
			//e.getMessage:获得具体的异常名称
			//e.printStackTrace():获得详细异常,异常名称、具体位置等
			System.out.println("连接失败"+e.getMessage());
		}
		return conn;	//连接数据库返回值不能为空
	}
	
	/**
	 * 创建执行SQL命令的Statement对象
	 * @param conn
	 * @return
	 */
	//Statement是一个接口,没有具体实现,通过conn.createStatement()创建具体对象
	public Statement createStatement(Connection conn){
		Statement stmt=null;	//数据库操作
		try{
			//由当前数据库连接生成一个数据操作对象stmt,不可new,所有操作都经过操作对象传达给数据库服务器
			stmt=conn.createStatement();
		}catch(SQLException e){
			System.out.println("创建执行SQL命令的Statement对象!"+e.getMessage());
		}
		return stmt;
	}
	
	/**
	 * 
	 * @param conn
	 * @param sql
	 * @return
	 */
	//PreparedStatement:预编译语句,相同SQL语句执行多次就使用
	//prepareStatement会先初始化SQL,先把这个SQL提交到数据库中进行预处理,多次使用可提高效率
	//createStatement不会初始化,没有预处理,没次都是从0开始执行SQL
	public PreparedStatement creaPreparedStatement(Connection conn,String sql){
		PreparedStatement stmt=null;	//申明一个为PreparedStatement的对象
		try{
			stmt=conn.prepareStatement(sql);
		}catch(SQLException e){
			e.printStackTrace();
		}
		return stmt;
	}
	
	/**
	 * 
	 * @param conn
	 * @param stmt
	 * @param sql
	 * @return
	 */
	//执行SQL语句,返回的是单个ResultSet对象
	public ResultSet executeQuery(Connection conn,Statement stmt,String sql){
		ResultSet rs=null;
		try{
			rs=stmt.executeQuery(sql);
		}catch(SQLException e){
			e.printStackTrace();
		}
		return rs;
	}
	
	/**
	 * 
	 * @param sql
	 * @return
	 */
	//执行给定SQL语句,返回值是更新的数据记录量
	public int executeUpdate(String sql){
		Connection conn=null;
		Statement stmt=null;
		int c=0;
		try{
			conn=getConn();
			//用这个stmt数据操作对象进行数据更新
			stmt=createStatement(conn);
			c=stmt.executeUpdate(sql);
		}catch(SQLException e){
		}finally{//异常发生,方法返回之前,总是要执行的代码
			closeConnAndStmt(conn,stmt,null);	//关闭连接
		}
		return c;
	}
	
	/**
	 * 
	 * @param conn
	 * @param stmt
	 * @param rs
	 */
	//关闭连接,避免占用资源
	public void closeConnAndStmt(Connection conn,Statement stmt,ResultSet rs){
		try{
			if(rs!=null){
				rs.close();
			}
			if(stmt!=null){
				stmt.close();	//操作关闭
			}
			if(conn!=null){
				conn.close();	//数据库关闭
			}
		}catch(SQLException e){
			e.printStackTrace();
		}
	}
	
	/**
	 * 测试
	 * @throws Exception 
	 */
	public static void main(String[] args) throws Exception{
		DbUtils dbUtils=new DbUtils();
		Connection conn=dbUtils.getConn();
		Statement stmt=dbUtils.createStatement(conn);
		String stuNo="20120304";
		String stuName="可可";
		String sql="select * from t_student where 1=1";
		ResultSet rs=dbUtils.executeQuery(conn, stmt, sql);
		while(rs.next()){
			String clumn=rs.getString(1);
			System.out.println(clumn);
		}
	}
	
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值