JDBC数据库应用开发.docx
《JDBC数据库应用开发.docx》由会员分享,可在线阅读,更多相关《JDBC数据库应用开发.docx(24页珍藏版)》请在冰点文库上搜索。
![JDBC数据库应用开发.docx](https://file1.bingdoc.com/fileroot1/2023-6/8/67ceea9d-4456-4f3b-9d9b-a3b4c8816935/67ceea9d-4456-4f3b-9d9b-a3b4c88169351.gif)
JDBC数据库应用开发
JDBC数据库应用开发
JDBC技术原理
JDBC是Sun公司提出的Java API中的一部分,其含义是用Java语言来访问数据库,是java程序访问数据库的标准接口。
在使用JDBC访问不同的数据库时,需要加载数据库的驱动程序,这些驱动程序由数据库厂商提供。
下面给出JDBC连接各种主流数据库的连接方式:
1、连接Oracle8/8i/9i/10g/11g(thin模式)
[html] viewplain copy
1.Class.forName("oracle.JDBC.driver.OracleDriver").newInstance();
2.String url="JDBC:
oracle:
thin:
@localhost:
1521:
orcl" //orcl为Oracle数据库的SID
3.String user="test";
4.String password="test";
5.Connection con=DriverManager.getConnection(url,user,password);
2、连接DB2数据库
[html] viewplain copy
1.Class.forName("com.ibm.db2.jcc.DB2Driver");
2.String url="JDBC:
db2:
//localhost:
5000/testDb";
3.String user="test"; String password="test";
4.Connection con=DriverManager.getConnection(url,user,password);
3、连接MySQL数据库
[html] viewplain copy
1.Class.forName("com.mysql.jdbc.Driver");
2.String url="JDBC:
mysql:
//localhost:
8080/testDB";
3.String user="test"; String password="test";
4.Connection con=DriverManager.getConnection(url,user,password);
4、连接SQLServer2000数据库
[html] viewplain copy
1.Class.forName("com.microsoft.JDBC.sqlserver.SQLServerDriver");
2.String url="JDBC:
microsoft:
sqlserver:
//localhost:
1433;DatabaseName=testDb";
3.String user="test"; String password="test";
4.Connection con=DriverManager.getConnection(url,user,password);
5、连接PostgreSQL数据库
[html] viewplain copy
1.Class.forName("org.postgresql.Driver");
2.String url="JDBC:
postgresql:
//localhost/testDb";
3.String user="test"; String password="test";
4.Connection con=DriverManager.getConnection(url,user,password);
6、连接Access数据库
[html] viewplain copy
1.Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
2.String url="JDBC:
odbc:
Driver={Microsoft Access Driver (*.mdb)};DBQ="+application.getRealPath("/Data/testDb/mdb");
3.Connection conn=DriverManager.getConnection(url,"","");
7、连接Sybase数据库
[html] viewplain copy
1.Class.forName("com.sybase.JDBC.SybDriver");
2.String url="JDBC:
sybase:
Tds:
localhost:
5007/testDb";
3.Properties pro=System.getProperties();
4.pro.put("user","userId");
5.pro.put("password","user_password");
6.Connection con=DriverManager.getConnection(url,pro);
8、连接informix数据库
[html] viewplain copy
1.Class.forName("com.informix.JDBC.ifxDriver");
2.String url="JDBC:
informix-sqli:
localhost:
1533/testDb:
INFORMIXSERVER=myserver"user=testUser;password=testpassword"; Connection con=DriverManager.getConnection(url);
JDBC连接数据库的过程很简单,以连接MySQL数据库为例,具体步骤如下:
(1)加载MySQL数据库连接的驱动程序。
可以到MySQL的官网上下载该驱动程序jar包,然后把jar包放到工程项目的WEB-INF/lib目录下。
加载数据库驱动程序使用的是Class.forName()方法,调用此方法会将制定的类加载到JVM中,其关键代码如下:
[html] viewplain copy
1.Class.forName("com.mysql.jdbc.Driver")
(2)设置访问数据库的用户名、密码及连接URL。
不同的数据库其连接URL有所不同,但基本格式都是“JDBC协议+数据库的IP地址+数据库端口号+数据库名”。
关键代码如下:
[html] viewplain copy
1.String user = "root";
2.String password = "root";
3.String url = "jdbc:
mysql:
//localhost:
3306/database";
(3)通过JDBCAPI的DriverManager类的getConnection()方法来创建与数据库之间的连接,getConnection()方法需要接受的参数有URL、用户名和密码,关键代码如下:
[html] viewplain copy
1.Connection conn = DriverManager.getConnction(url,user,password);
(4)建立连接之后,使用该连接对象创建用户操作SQL语句的PreparedStatement对象,使用的是prepareStatement()方法,关键代码如下:
[html] viewplain copy
1.PreparedStatement ps = conn.prepareStatement(sql);
(5)关闭数据库连接,释放系统资源,代码如下:
[html] viewplain copy
1.conn.close();
下面给出一个JDBC连接MySQL数据库的完整代码示例,这个示例采用了MVC设计模式,单例模式。
JSP作为表现层,Servlet是业务控制层,Dao是操作实体类的持久层,详细代码如下:
User.java----用户实体类
[html] viewplain copy
1.package com.kj.test;
2.
3.public class User {
4.
5. private Long id;
6. /** 姓名 */
7. private String name;
8. /** 性别 */
9. private String sex;
10. /** 年龄 */
11. private String age;
12.
13.
14. public Long getId() {
15. return id;
16. }
17.
18. public void setId(Long id) {
19. this.id = id;
20. }
21.
22. public String getName() {
23. return name;
24. }
25.
26. public void setName(String name) {
27. this.name = name;
28. }
29.
30. public String getSex() {
31. return sex;
32. }
33.
34. public void setSex(String sex) {
35. this.sex = sex;
36. }
37.
38. public String getAge() {
39. return age;
40. }
41.
42. public void setAge(String age) {
43. this.age = age;
44. }
45.
46.}
DBConn.java----MySQL数据库连接类
[html] viewplain copy
1.package com.kj.test;
2.
3.import java.sql.Connection;
4.import java.sql.DriverManager;
5.
6.public class DBConn {
7.
8. /** 加载连接 */
9. private static Connection conn = null;
10. /** MySQL数据库驱动名 */
11. private static final String DRIVERNAME = "com.mysql.jdbc.Driver";
12. /** 用户 */
13. private static final String USERNAME = "root";
14. /** 密码 */
15. private static final String PASSWORD = "root";
16. /** 连接URL */
17. private static final String URL = "jdbc:
mysql:
//localhost:
3306/test";
18.
19. public static Connection getConn() {
20. try {
21. Class.forName(DRIVERNAME);
22. conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
23. } catch (Exception e) {
24. e.printStackTrace();
25. }
26. return conn;
27. }
28.
29. public static void main(String[] args) {
30.
31. //测试是否已经连接成功
32. Connection conn = DBConn.getConn();
33. System.out.println("conn:
"+conn);
34.
35. }
36.
37.}
UserDao.java----持久化User模型到数据库
[html] viewplain copy
1.package com.kj.test;
2.
3.import java.sql.Connection;
4.import java.sql.PreparedStatement;
5.import java.sql.ResultSet;
6.import java.util.ArrayList;
7.import java.util.List;
8.
9.public class UserDao {
10.
11. private static UserDao userDao = null;
12.
13. /***
14. * 单例模式获取userDao
15. * @return
16. */
17. public static UserDao getInstance() {
18. if (userDao == null) {
19. userDao = new UserDao();
20. }
21. return userDao;
22. }
23.
24. /**
25. * 保存一个user对象到数据库
26. * @param user
27. * @return
28. */
29. public boolean saveUser(User user) {
30. boolean result = false;
31. Connection conn = null;
32. PreparedStatement ps = null;
33. try {
34. conn = DBConn.getConn();
35. String sql = "insert into user(name,sex,age) values(?
?
?
)";
36. ps = conn.prepareStatement(sql);
37. ps.setString(1, user.getName());
38. ps.setString(2, user.getSex());
39. ps.setString(3, user.getAge());
40. int n = ps.executeUpdate();
41. if (n == 1) {
42. result = true; //保存成功
43. }
44. } catch (Exception e) {
45. e.printStackTrace();
46. } finally {
47. try {
48. ps.close();
49. conn.close();
50. } catch (Exception e) {
51. e.printStackTrace();
52. }
53. }
54. return result;
55. }
56.
57. /**
58. * 从数据库中加载表数据放入对象列表
59. * @return
60. */
61. public List getUserList() {
62. List userList = new ArrayList();
63. Connection conn = null;
64. PreparedStatement ps = null;
65. ResultSet rs = null;
66. try {
67. conn = DBConn.getConn();
68. String sql = "select * from user";
69. ps = conn.prepareStatement(sql);
70. rs = ps.executeQuery();
71. while (rs.next()) {
72. User user = new User();
73. user.setId(rs.getLong("id"));
74. user.setName(rs.getString("name"));
75. user.setSex(rs.getString("sex"));
76. user.setAge(rs.getString("age"));
77. userList.add(user);
78. }
79. } catch (Exception e) {
80. e.printStackTrace();
81. } finally {
82. try {
83. rs.close();
84. ps.close();
85. conn.close();
86. } catch (Exception e) {
87. e.printStackTrace();
88. }
89. }
90.
91. return userList;
92. }
93.
94. /**
95. * 修改user对象信息并持久化到数据库
96. * @param args
97. */
98. public boolean updateUser(User user) {
99. boolean result = false;
100. Connection conn = null;
101. PreparedStatement ps = null;
102. try {
103. conn = DBConn.getConn();
104. String sql = "update user set age = ?
sex = ?
where name = ?
";
105. ps = conn.prepareStatement(sql);
106. ps.setString(1, user.getAge());
107. ps.setString(2, user.getSex());
108. ps.setString(3, user.getName());
109. int n = ps.executeUpdate();
110. if (n == 1) {
111. result = true; //更新成功
112. }
113. } catch (Exception e) {
114. e.printStackTrace();
115. } finally {
116. try {
117. ps.close();
118. conn.close();
119. } catch (Exception e) {
120. e.printStackTrace();
121. }
122. }
123.