jdbc学习代码
2018-06-22 本文已影响0人
在努力中
从基本连接==》配置文件连接==》连接后操作数据库(更改操作和查询操作)
封装了 连接、关闭连接的方法
package com.lsy.jdbc;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import org.junit.Test;
public class ReivewTest {
/**
* 四、通过 ResultSet 查询结果
* 1、ResultSet 封装了 jdbc 的查询结果【结果集】
* @throws Exception
*/
@Test
public void testResultSet() throws Exception{
// 1、连接数据库
Connection connection = null;
Statement statement = null;
ResultSet rs = null;
String sql = null;
try {
// 2、获取 Statement 对象,通过Connection 的 【createStatement()】 方法获取
connection = getConnection();
statement = connection.createStatement();
// 3、准备 SQL 语句
sql = "select * from customer";
// 4、发送【执行】 SQL 语句,得到结果集,通过Statement 的 【excuteQuery(sql)】 方法
rs = statement.executeQuery(sql);
// 5、处理结果集,
// |5.1、 调用 ResultSet 的 next() 方法,查询下一条记录是否有效,若有效,指针下移
while(rs.next()){
// |5.2、getXxx() 方法来获得具体列值
int id = rs.getInt(1);//此处的id是列,值是第几个个列名,也可以直接写列名
String name = rs.getString("name");
String email = rs.getString(3);
Date date = rs.getDate(4);
System.out.println("id:"+id+"名字"+name);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
} finally {
// 6、关闭数据库资源连接
release(rs, statement, connection);
}
}
/**
* 三、利用Statement 对象操作数据库
*
*/
@Test
public void testStatement(){
//1.获取数据连接
Connection connection = null;
Statement statement = null;
String sql = null;
try {
//2.调用Connection 对象的 【createStatement()】 方获取 Statement 对象
connection = getConnection();
statement = connection.createStatement();
//3.准备 SQL 语句
sql = "update customer set name = 'caa' where id = 3";
//4.发送 SQL 语句:调用 Statement 对象的 【executeUpdate(sql)】 方法
statement.executeUpdate(sql);
} catch (Exception e) {
e.printStackTrace();
} finally {
//5.关闭数据库资源:由里向外关闭
release(null, statement, connection);
}
}
/*
* 关闭资源
*/
public void release(ResultSet resultSet,Statement statement,Connection connection){
if(resultSet != null){
try {
resultSet.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(statement != null){
try {
statement.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(connection != null){
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 二、用配置文件形式 解耦
* @throws Exception
*
*/
@Test
public void testGetConnection2() throws Exception{
Connection connection = getConnection();
System.out.println("testGetConnection2连接:"+connection);
}
private Connection getConnection() throws IOException, ClassNotFoundException, SQLException {
//0、读取配置文件
/*
* 1、属性文件对应Java 中的 Properties类
* 文件放在src下,实际上是在bin(类所在目录)中
* 2、可以使用 类加载器 加载 bin 目录 (路径下的文件)
*/
Properties properties = new Properties();
InputStream inStream =
this.getClass().getClassLoader().getResourceAsStream("jdbc.properties");
properties.load(inStream);
//1、准备连接数据库的四个字符串:user password,jdbcUrl,driverClass
// 从配置文件中得到
String user = properties.getProperty("user");
String password = properties.getProperty("password");
String url = properties.getProperty("jdbcUrl");
String driverClass = properties.getProperty("driver");
//2、加载驱动:Class.forName(driverClass)
Class.forName(driverClass);
//3、调用:DriverManager.getConnection(jdbcUrl,user,password)
//3.1、获取数据库的连接
Connection connection =
DriverManager.getConnection(url,user,password);
return connection;
}
/**
* 一、基础连接
* Connection 代表应用程序和数据库的连接
* @throws Exception
*
*/
@Test
public void testGetConnection1() throws Exception{
//1、准备连接数据库的四个字符串:user password,jdbcUrl,driverClass
String user = "root";
String password = "123456";
String url = "jdbc:mysql://localhost:3306/jdbc_test?useSSL=false";
String driverClass = "com.mysql.jdbc.Driver";
//2、加载驱动:Class.forName(driverClass)
Class.forName(driverClass);
//3、调用:DriverManager.getConnection(jdbcUrl,user,password)
//3.1、获取数据库的连接
Connection connection =
DriverManager.getConnection(url,user,password);
System.out.println("testGetConnection1连接:"+connection);
}
}