JDBC的工具类

一、释放资源

  主要是在所有的操作结束之后,需要释放资源(close()方法)

1
2
3
4
5
6
7
8
9
10
11
12
13

if (rs != null) //添加一个判断rs对象是不是空(防止一行都没有)
{
try
{
rs.close();
}
catch (SQLException sqlEx)
{
} // ignore

rs = null;
}

二、 驱动注册#

  原来的DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Driver 这个类里面有静态代码块,一上来就执行了,所以等同于我们注册了两次驱动。 其实没这个必要的。
//静态代码块 —> 类加载了,就执行。

最后形成以下代码即可。
Class.forName("com.mysql.jdbc.Driver");    
1
2
3
4
5
6
7
8
//1.注册驱动
//DriverManager.registerDriver(new Driver()); //需要一个参数 这个参数是java.sql.jdbc.Driver
try {
Class.forName("com.mysql.jdbc.Driver"); //直接使用forName方法
} catch (ClassNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}

三、连接对象整合

  其实就是把1注册驱动和2建立连接拿出来专门做一个getconn()方法,方便将前两步整合在一起。第三步开始只需要调用方法得到结果就可以。

完整代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package lianxi;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Driver;
import com.mysql.jdbc.Statement;
public class JDBC{

//写在外面好更改
static String url="jdbc:mysql://localhost/student";
static String name="root";
static String password="njdxrjgc7777777.";

public static java.sql.Connection getConn(){ //新建一个方法整合
java.sql.Connection conn=null;

//1.注册驱动
//DriverManager.registerDriver(new Driver()); //需要一个参数 这个参数是java.sql.jdbc.Driver
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}

//2.建立连接(url协议+数据库,user账号,password密码)
try {
conn=DriverManager.getConnection(url,name,password);
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
return conn;
}

public static void main(String[] args) throws SQLException{
java.sql.Connection conn = getConn(); //创建conn去得到刚才那个方法的结果
//3.创建statement,跟数据库打交道,一定需要这个对象
java.sql.Statement st=conn.createStatement();

//4.执行查询
String sql="select * from s_stu";
ResultSet rs=st.executeQuery(sql);

//5.遍历每一条查询
while(rs.next()) //是否可以移动到下一行
{
int id=rs.getInt("id"); //获得id
String name=rs.getString("name"); //获得name
int age=rs.getInt("age"); //获得age
System.out.println("id="+id+" name="+name+" age="+age);
}

//6.释放
rs.close();
}
}

最终代码如下:


四、创建properties

  将url,name,password等放在配件内(代码如上的完整代码为例)

src下新建一个文件(properties)里面存放这几条内容

1
2
3
4
driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost/student"
name=root
password=njdxrjgc7777777.

创建文件目录:


五、读取properties

  主要是要将driverClass/url/name/password改到文档里之后,将四个写成static的null然后写一个static{}去加载文档内容。

主要步骤:

  1. 创建一个Properties属性配置对象。
  2. 先创建一个InputStream对象,然后调动Properties对象的load()方法去加载输入流。
  3. 使用Properties对象的getProperties()方法获取 url/name等。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//写在外面好更改
static String driverClass=null;
static String url=null;
static String name=null;;
static String password=null;

static{

//1.创建一个属性配置对象
Properties properties=new Properties();

InputStream is=JDBC.class.getClassLoader().getResourceAsStream("properties"); //类.class.getClassLoader().getResourceAsStream("文件名");
//2.导入输入流
try {
properties.load(is); //load方法加载
} catch (IOException e) {
e.printStackTrace();
}

//3.调用方法读取文档里面的url/name/password等
driverClass=properties.getProperty("driverClass");
url=properties.getProperty("url");
name=properties.getProperty("name");
password=properties.getProperty("password");
}

完整代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package lianxi;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Driver;
import com.mysql.jdbc.Statement;
public class JDBC{
//写在外面好更改
static String driverClass=null;
static String url=null;
static String name=null;;
static String password=null;

static{

//1.创建一个属性配置对象
Properties properties=new Properties();

InputStream is=JDBC.class.getClassLoader().getResourceAsStream("properties"); //类.class.getClassLoader().getResourceAsStream("文件名");
//2.导入输入流
try {
properties.load(is); //load方法加载
} catch (IOException e) {
e.printStackTrace();
}

//3.调用方法读取文档里面的url/name/password等
driverClass=properties.getProperty("driverClass");
url=properties.getProperty("url");
name=properties.getProperty("name");
password=properties.getProperty("password");
}

public static java.sql.Connection getConn(){
java.sql.Connection conn=null;
//1.注册驱动
//DriverManager.registerDriver(new Driver()); //需要一个参数 这个参数是java.sql.jdbc.Driver
try {
Class.forName(driverClass);
} catch (ClassNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
//2.建立连接(url协议+数据库,user账号,password密码)
try {
conn=DriverManager.getConnection(url,name,password);
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
return conn;
}

public static void main(String[] args) throws SQLException{
java.sql.Connection conn = getConn();
//3.创建statement,跟数据库打交道,一定需要这个对象
java.sql.Statement st=conn.createStatement();

//4.执行查询
String sql="select * from s_stu";
ResultSet rs=st.executeQuery(sql);

//5.遍历每一条查询
while(rs.next()) //是否可以移动到下一行
{
int id=rs.getInt("id"); //获得id
String name=rs.getString("name"); //获得name
int age=rs.getInt("age"); //获得age
System.out.println("id="+id+" name="+name+" age="+age);
}

//6.释放
rs.close();
}
}

读取结果:


×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 一、释放资源
  2. 2. 二、 驱动注册#
  3. 3. 三、连接对象整合
  4. 4. 四、创建properties
  5. 5. 五、读取properties
,