Java如何获取数据库中的数据·案例
步骤简介:
加载驱动:
加载jdbc的驱动类Class.forName(“com.mysql.jdbc.Driver”)到jvm中。
建立连接:
使用DriverManager.getConnection(sql_url,username,pwd)方法返回一个Connection对象。
预编译sql语句:
通过Connection.prepareStatement(sql)方法,将sql语句进行预编译,返回一个PrepareStatement对象,该PrepareStatement对象能将参数化的 SQL 语句发送到数据库。
执行sql语句:
执行preparedStatement.executeQuery(sql);方法返回一个ResultSet类的对象,ResultSet类的对象中的内容是数据库中“查询到”的内容;(除了查询方法之外,也可以有增删改查)
获取数据库中的数据并任意操作:
通过ResultSet的next()方法,逐行读取数据库中的信息;可以将读取到的信息赋值给其他变量等供它用;
步骤图示:
代码show
1.
import
java.sql.Connection;
2.
import
java.sql.DriverManager;
3.
import
java.sql.PreparedStatement;
4.
import
java.sql.ResultSet;
5.
import
java.sql.SQLException;
6.
7.
/**
8.
* @author Administrator
9.
*
链接数据库,在这个
java
类中使用的是
JDBC
技术链接的数据库,
10.
*
这技术需要一类三接口
11.
*DriverManager
类,
12.
*Connection
接口,
java.sql.Connection
13.
*Statement
接口
,java.sql.Statement;
14.
*ResultSet
接口
,java.sql.ResultSet;
15.
*/
16.
public
class
GetSQLData {
17.
public
static
void
main(String[] args) {
18.
//
创建三个接口的对象
19.
Connection connection =
null
;
20.
PreparedStatement preparedStatement =
null
;
21.
ResultSet resultSet =
null
;
22.
//
获取驱动类
23.
try
{
24.
Class.forName(
“com.mysql.jdbc.Driver”
);
//
要确保已经导入了
‘mysql-connector-java-5.1.29.jar'(
最后的版本号可以随意)
25.
//com.mysql.jdbc.Driver driver = new com.mysql.jdbc.Driver();
番外小知识:该句与上一句的功能是一样,都是将
Driver
类加载到
26.
//jvm
中,并且该
Driver
类是经过初始化了的;(一个初始化了的
Driver
类被加载到
jvm
中,则就是该
Driver
完成了在
jvm
中的
“
注册
”
)
;
如果仅仅是
27.
//
语句
com.mysql.jdbc.Driver driver = null;
就不行,因为虽然加载了,但是没有初始化;
28.
}
catch
(ClassNotFoundException e) {
29.
System.out.println(
”
获取驱动类失败
”
);
30.
e.printStackTrace();
31.
}
32.
33.
//
连接数据库:使用
java.sql.DriverManager
的
getConnection
方法以数据库
url
加上数据库的
username
和
password
做参数;
34.
try
{
35.
connection = DriverManager.getConnection(
“jdbc:mysql://localhost:3306/news”
,
“root”
,
“yujiawen”
);
36.
}
catch
(SQLException e) {
37.
System.out.println(
”
连接数据库失败
”
);
38.
e.printStackTrace();
39.
}
40.
41.
String sql =
“select * from title”
;
42.
try
{
43.
preparedStatement = connection.prepareStatement(sql);
44.
}
catch
(SQLException e) {
45.
// TODO Auto-generated catch block
46.
e.printStackTrace();
47.
}
48.
49.
try
{
50.
resultSet = preparedStatement.executeQuery(sql);
51.
}
catch
(SQLException e) {
52.
// TODO Auto-generated catch block
53.
e.printStackTrace();
54.
}
55.
56.
try
{
57.
while
(resultSet.next())
//ResultSet
对象具有指向其当前数据行的光标。
58.
//
最初,光标被置于第一行之前。
next
方法将光标移动到下一行;因为该方法在
ResultSet
对象没有下一行时返回
false
,
59.
//
所以可以在
while
循环中使用它来迭代结果集。
60.
{
61.
int
id = resultSet.getInt(
“id”
);
62.
String name = resultSet.getString(
“name”
);
63.
String creator = resultSet.getString(
“creator”
);
64.
System.out.println(
“id:”
+id+
” name:”
+name+
” creator:”
+creator);
65.
}
66.
}
catch
(SQLException e) {
67.
// TODO Auto-generated catch block
68.
e.printStackTrace();
69.
}
70.
71.
72.
//
关闭三个接口的对象
73.
if
(resultSet!=
null
)
74.
{
75.
try
{
76.
resultSet.close();
77.
}
catch
(SQLException e) {
78.
// TODO Auto-generated catch block
79.
e.printStackTrace();
80.
}
81.
}
82.
if
(preparedStatement!=
null
)
83.
{
84.
try
{
85.
preparedStatement.close();
86.
}
catch
(SQLException e) {
87.
// TODO Auto-generated catch block
88.
e.printStackTrace();
89.
}
90.
}
91.
if
(connection!=
null
)
92.
{
93.
try
{
94.
connection.close();
95.
}
catch
(SQLException e) {
96.
// TODO Auto-generated catch block
97.
e.printStackTrace();
98.
}
99.
}
100.
}
101.
}
运行结果:
附:数据库中的数据: