JDBC工具类

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

/**
 * 数据库连接工具类
 * 
 * @author xiao
 */
public class DBUtil {
	/**
	 * 连接对象
	 */
	private Connection conn;
	/**
	 * sql语句对象
	 */
	private PreparedStatement ps;
	/**
	 * 结果集
	 */
	private ResultSet rs;

	/**
	 * 4条连接信息
	 */
	private static String DRIVERNAME;
	private static String URL;
	private static String USER;
	private static String PASSWORD;

	/**
	 * 注册驱动
	 */
	static {
		try {
//			读取属性文件,设置连接信息
			Properties p = new Properties();
			String path = DBUtil.class.getResource("").toString();
			path = path.substring(path.indexOf("/") + 1);
			System.out.println(path);
			p.load(new FileReader(path + "db.properties"));

			DRIVERNAME = (String) p.get("jdbc.driver");
			URL = (String) p.get("jdbc.url");
			USER = (String) p.get("jdbc.user");
			PASSWORD = (String) p.get("jdbc.password");

//			注册驱动
			Class.forName(DRIVERNAME);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 获取连接
	 */
	public void getConnection(String  sql,Object[]  objs) {
		try {
			conn = DriverManager.getConnection(URL, USER, PASSWORD);
			ps=conn.prepareStatement(sql);
			for (int j = 0; j < objs.length; j++) {
				ps.setObject(j+1, objs[j]);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 断开连接
	 */
	public void close() {
		try {
			if (rs != null) {
				rs.close();
			}
			if(ps!=null) {
				ps.close();
			}
			if(conn!=null) {
				conn.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 增删改操作
	 * 
	 * @return
	 */
	public int update(String  sql,Object[]   objs) {
		int  i=0;
		
		getConnection(sql, objs);
		try {
			i=ps.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return   i;
	}

	/**
	 * 查询操作
	 */
	public ResultSet query(String  sql,Object[]  objs) {
		ResultSet  rs=null;
		getConnection(sql, objs);
		
		try {
			rs=ps.executeQuery();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return  rs;
	}

}

配合db.properties文件使用

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/school?serverTimezone=UTC
jdbc.user=root
jdbc.password=root

常用的API
常用包: Java.sql.*
常用类:

DriverManager 驱动管理器
Connection 连接
Statement sql语句对象
Statement存在漏洞,可以使用拼接的方法
(PreparedStatement extends Statement)
ResultSet 结果集

不同的数据库驱动不同!!
那么,驱动类名也不同:

Mysql5.X com.mysql.jdbc.Driver
Mysql8.X com.mysql.cj.jdbc.Driver
Oracle oracle.jdbc.driver.OracleDriver
Sql server com.microsoft.jdbc.sqlserver.SQLServerDriver
DB2 com.ibm.db2.jdbc.app.DB2Driver

那么,连接路径url不同

Mysql5.X jdbc:mysql://主机:3306/数据库名 Mysql8.X
jdbc:mysql://主机:3306/数据库名?serverTimezone=UTC Oracle
jdbc:oracle:thin:@主机:1521:数据库名 Sql server
jdbc:microsoft:sqlserver://主机:1433;DatabaseName=数据库名 DB2
jdbc:db2://主机:5000/数据库名

rs.next()作用:

默认游标在集合的开始位置,第一行之前。 游标下移,然后判断游标指向的位置是否有一条记录,如果有返回true,如果没有返回false。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值