JDBC基本操作

JDBC连接数据库
创建一个连接数据库的程序,需要以下步骤:

1. 加载JDBC驱动程序:
在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),通过java.lang.Class类的静态方法forName(String className)实现。
驱动获取:
(1)MySQL Connector jar包下载
选择Platform Independent linux系统:tar包 windows:zip包
(2)ojdbc.jar 在安装Oralce数据库目录下的product/版本号/dbname/jdbc/lib
(3)导入jar包:在项目中新建一个lib目录,将jar包复制到该目录下,右击project->build path- >config build path->Add Jars->选择lib下的jar包
(4)加载驱动:

		static {						//静态代码块,加载该类时只执行一次
			try {
				Class.forName("com.mysql.cj.jdbc.Driver");	//l获取MySQL驱动
				Class.forName("oracle.jdbc.driver.OracleDriver");	//获取Oracle驱动
			} catch (ClassNotFoundException e) {
				System.out.println("加载驱动失败");
				e.printStackTrace();
			}
		}

成功加载后,会将Driver类的实例注册到DriverManager类中

2. 创建数据库连接:
要连接数据库,需要向java.sql.DriverManager请求并获得Connection,该对象代表一条数据库连接
(1)使用DriverManager.getConnection()方法需要三个参数,连接数据库的url,用户名和密码

		String url = "jdbc:mysql://localhost:3306/db_name";		//MySQL连接url
		String url= "jdbc:oracle:thin:@localhost:1521:orcl";	//Oracle连接url
		String username = "xxx"; 	 //数据库用户名
		String password = "xxx";	//用户名密码
		try {
				conn = DriverManager.getConnection(url ,username ,password );	//连接mysql
			} catch (SQLException e) {
				System.out.println("连接数据库失败");
				e.printStackTrace();
			}

(2)连接数据库的url可设置参数:
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gbk ;

  • useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为
    gb2312或GBK,本参数必须设置为true 。

注: MySQL连接时如果报zone异常
或者JDBC版本与MySQL版本不兼容,MySQL的版本更高一些,在连接语句后加上“useSSL=true” ,就可以连接到数据库了:
url需要添加&serverTimezone=GMT%2B8&useSSL=false将时间设为北京东八区

3. 创建执行SQL语句的对象:
要执行SQL语句,必须获得java.sql.Statement对象,Statement对象分为以下三种类型:
1、执行静态SQL语句,通常使用Statement实例实现。

String username  = "admin";	//SQL语句通过拼接形成,容易被SQL注入
String password = "' or 1=1";
System.out.println("SELECT * FROM TABLE WHRER USERNAME = '"+ username + "' AND PASSWORD = '" + password);	

在这里插入图片描述
2、执行动态SQL语句,通常使用PreparedStatement实例实现。
:对于SQL语句形态一样,赋值不一样的使用预编译PreparedStatement更高效,无法改变其查询的逻辑结构,也可以防SQL注入
3、执行数据库存储过程。通常通过CallableStatement实例实现。
具体的获取方式:

	Statement st = conn.createStatement();
	PreparedStatement pst = conn.prepareStatement(sql);	//后两者需设置SQL语句为参数
	CallableStatement cst = conn.prepareCall(sql);

4. 执行SQL语句:
Statement接口提供了三种执行SQL语句的方法:executeQuery、executeUpdate和execute
1、ResultSet executeQuery(String sqlString):执行查询数据库的SQl语句,返回一个结果集(ResultSet)对象。
2、int executeUpdate(String sqlString):用于执行INSERT、UPDATE或DELETE语句以及SQL DDL语句(SHOW,ALTER,CREATE、DROP等)
3、execute(String sqlString):用于执行返回多个结果集或更新计数,如果第一个结果是ResultSetobject,则返回true;否则返回false
具体实现的代码:

		ResultSet rs = st.executeQuery("SELECT  * FROM TABLE_NAME")int rows = st.executeUpdate("INSERT INTO.....");
		boolean flag = st.execute(String sql);

5. 遍历结果集:
1、执行更新,删除,插入返回的是本次操作影响到的记录数。
2、执行查询返回的结果是一个ResultSet对象。
ResultSet包含符合SQL语句中条件的所有行,并且通过get方法可以对着些数据进行访问。

while(rs.next()) {
	String username = rs.getString("USERNAME");
	String password = rs.getString("2");	//该方法比较高效
}

注:参数为数据库表里的字段名,字段是从1开始编号
ResultSet的其他使用方式:ResultSet的卷动和更新db数据
6. 关闭JDBC对象资源,处理异常
操作完成后要把所有创建的JDBC对象全都关闭,释放JDBC资源,关闭的顺序与创建顺序相反:

try {
	if(rs != null) {	//关闭结果集
		rs.close();
	}
} catch (SQLException e) {	
	e.printStackTrace();
}
try {
	if(st != null) {	//关闭执行sql语句的st对象
		st.close();
	}
} catch (SQLException e) {
	e.printStackTrace();
}	
try {
	if(conn != null) {	//关闭连接对象
		conn.close();
	}
} catch (SQLException e) {
	e.printStackTrace();
}

注:关闭pst和cst同样需要填进st参数中,可以通过嵌套函数来实现只关闭部分对象(传null参数),可以将JDBC使用静态工厂方法变成工具类,给DAO设计模式使用

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值