Java如何获取数据库中的数据案例
Java如何获取数据库中的数据·案例
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. }
运行结果: