版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 Java数据库编程JDBC:Java DataBase Connection本季目标1、JDBC的分类 2、JDBC的主要操作类和接口: DriverManager、Connection、Statement、PreparedStatement、ResultSet 3、如何使用JDBC连接MySQL数据库上有MYSQL的教程。1、什么是JDBC? JDBC是JAVA提供的一个服务,专门用于访问数据库操作,而且注意:JDBC定义的是一个数据库访问的标准,所以里面基本上都是一系列的接口。各个数据库厂商如果要想支持JDBC操作,则肯定要提供一组相关的类,这些类
2、肯定都是提供接口子类实现。2、JDBC的分类 ·JDBC-ODBC桥连接 ·JDBC直接连接 ·JDBC网络连接 3、什么是ODBC? ODBC是微软公司定义的一个开放式数据库连接(Open DataBase Connection),使用ODBC可以连接各种数据库(前提:必须在windows中安装好驱动才可以)。在SUN 的JDK中默认提供了此数据库的驱动程序,所以JDK本身可以直接使用JDBC-ODBC进行访问。访问的过程: JDBC -> ODBC -> 数据库 (性能比较低)
3、如果直接使用JDBC访问,访问过程:JDBC -> 数据库(性能较高) 4、主要操作接口 · Connection:表示连接数据库的接口 · Statement:表示操作数据库的接口(执行SQL语句) |- PreparedStatement:操作SQL语句,但是可以进行预处理操作。 · ResultSet:表示查询之后的返回结果 5、使用JDBC-ODBC操作Access数据库PS:以上内容由北大青鸟佳音旗舰门老师从网络整理新建一个access空数据库 建立好了一个数据库,数据库的名字为
4、:mydb.mdb 在数据库中创建表: 建立一张person表,包括以下字段: · id -> 自动增长 · name -> 姓名 · age -> 年龄 因为我们的目的是使用JDBC-ODBC桥连接操作数据库,所以此处必须先配置ODBC数据源:管理工具 -> 数据源(ODBC) 配置一个全局的数据源名称 在ODBC上设置了一个数据库的别名,此别名testDB代表mydb.mdb。以后在操作的时候就是使用testDB即可。 如果要设置acc
5、ess数据源名称,则必须先关闭打开的access文件之后再设置 保存并关闭access数据库 那么以后直接使用testDB就可以访问数据库了。1、操作数据库的步骤(JDBC) · 加载数据库的驱动程序:Class.forName("驱动程序") ; · 通过连接管理器,取得一个数据库的连接:DriverManager.getConnection(连接地址) · 通过连接创建数据库的操作对象:Statement · 操作数据库 -> 执行SQL语句
6、· 关闭数据库操作我们现在使用Eclipse新建一个JDBCProject项目来测试下哈 在JDBC中所有的操作步骤都是一样,但是驱动程序和连接地址是不一样的,ODBC的: · 驱动程序:sun.jdbc.odbc.JdbcOdbcDriver · 连接地址:jdbc:odbc:ODBC配置的DSN名称(jdbc:odbc:testDB)JDBC中的所有操作的包都是java.sql包中JDBCDemo01:package com.redking.jdbc.demo; import
7、;java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class JDBCDemo01 public
8、static final String DBDRIVER = "sun.jdbc.odbc.JdbcOdbcDriver" public static final String DBURL = "jdbc:odbc:testDB" public stati
9、c void main(String args) /数据库连接对象 Connection conn = null;
10、160; /数据库操作对象 Statement stmt = null; /1、加载驱动程序
11、 try Class.forName(DBDRIVER); catch
12、60;(ClassNotFoundException e) e.printStackTrace();
13、60; /2、连接数据库 /通过连接管理器连接数据库 try
14、60; conn = DriverManager.getConnection(DBURL); catch (SQLException e)
15、 e.printStackTrace(); /3、向数据库中插入一条数据
16、 String sql = "INSERT INTO person(name,age) VALUES ('Michael',20)" try
17、160; stmt = conn.createStatement(); catch (SQLException e)
18、0; e.printStackTrace(); /4、执行语句
19、; try stmt.executeUpdate(sql); catch (SQLExcep
20、tion e) e.printStackTrace();
21、 /5、关闭操作,步骤相反哈 try stmt.close();
22、 conn.close(); catch (SQLException e)
23、 e.printStackTrace(); 验证一下,有没问题,没有报错,正常 现在看下access中数据有没写入进出哈 现在所插入的数据都是固定死的,那么能
24、不能插入一些灵活的数据呢?例如:有些数据可以直接从键盘上输入。JDBCDemo02:package com.redking.jdbc.demo; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.sql.Connection;
25、60; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class JDBCDemo02 public static final String D
26、BDRIVER = "sun.jdbc.odbc.JdbcOdbcDriver" public static final String DBURL = "jdbc:odbc:testDB" public static void main(String ar
27、gs) String name = null; int age = 0;
28、160; BufferedReader buf = new BufferedReader(new InputStreamReader(System.in); System.out.println("请输入姓名:");
29、; try name = buf.readLine(); catch (IOException e1) &
30、#160; e1.printStackTrace(); System
31、.out.println("请输入年龄:"); try age = Integer.parseInt(buf.readLine();
32、 catch (NumberFormatException e1) / TODO Auto-generated catch block
33、60; e1.printStackTrace(); catch (IOException e1) &
34、#160; / TODO Auto-generated catch block e1.printStackTrace(); &
35、#160; /数据库连接对象 Connection conn = null;
36、; /数据库操作对象 Statement stmt = null; /1、加载驱动程序
37、160; try Class.forName(DBDRIVER); catch (Class
38、NotFoundException e) e.printStackTrace();
39、 /2、连接数据库 /通过连接管理器连接数据库 try
40、 conn = DriverManager.getConnection(DBURL); catch (SQLException e)
41、160; e.printStackTrace(); /3、向数据库中插入一条数据
42、60; String sql = "INSERT INTO person(name,age) VALUES ('"+name+"',"+age+")" System.out.println(sql); &
43、#160; try stmt = conn.createStatement();
44、0; catch (SQLException e) e.printStackTrace();
45、160; /4、执行语句 try stmt.exec
46、uteUpdate(sql); catch (SQLException e) e.printStackTrace();
47、0; /5、关闭操作,步骤相反哈 try
48、0; stmt.close(); conn.close();
49、 catch (SQLException e) e.printStackTrace();
50、0; 看下效果: 已经写入数据库了哈 那能不能修改一条数据呢?JDBCDemo03:package com.redking.jdbc.demo; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException
51、; import java.sql.Statement; public class JDBCDemo03 public static final String DBDRIVER = "sun.jdbc.odbc.JdbcOdbcDriver"
52、160; public static final String DBURL = "jdbc:odbc:testDB" public static void main(String args) /数
53、据库连接对象 Connection conn = null; /数据库操作对象
54、; Statement stmt = null; /1、加载驱动程序 try
55、160; Class.forName(DBDRIVER); catch (ClassNotFoundException e)
56、 e.printStackTrace(); /2、连接数据库
57、 /通过连接管理器连接数据库 try conn = DriverManager.getConnection(DBURL);
58、0; catch (SQLException e) e.printStackTrace();
59、60; /3、向数据库中插入一条数据 String sql = "UPDATE person SET name='51cto',age=2
60、5 WHERE id=4" try stmt = conn.createStatement();
61、0; catch (SQLException e) e.printStackTrace();
62、60; /4、执行语句 try
63、60; stmt.executeUpdate(sql); catch (SQLException e)
64、0;e.printStackTrace(); /5、关闭操作,步骤相反哈
65、try stmt.close(); conn.close();
66、 catch (SQLException e) e.printStackTrace();
67、; 就改了一行代码,看下效果,有没改过来哈 现在把ID为4的数据删除掉JDBCDemo04:package com.redking.jdbc.demo; import java.sql.Connection; import java.sql.DriverManager;&
68、#160; import java.sql.SQLException; import java.sql.Statement; public class JDBCDemo04 public static final String DBDRIVER = "sun.jdbc.odbc.JdbcOdbcDr
69、iver" public static final String DBURL = "jdbc:odbc:testDB" public static void main(String args)
70、160; /数据库连接对象 Connection conn = null; /数据库操作对象
71、 Statement stmt = null; /1、加载驱动程序 try
72、60; Class.forName(DBDRIVER); catch (ClassNotFoundException e) &
73、#160; e.printStackTrace(); /2、连接数据库 &
74、#160; /通过连接管理器连接数据库 try &
75、#160;conn = DriverManager.getConnection(DBURL); catch (SQLException e) e.printStac
76、kTrace(); /3、向数据库中插入一条数据 String sql =
77、;"DELETE FROM person WHERE id=4" try stmt = conn.createStatement();
78、 catch (SQLException e) e.printStackTrace();
79、; /4、执行语句 try
80、; stmt.executeUpdate(sql); catch (SQLException e)
81、 e.printStackTrace(); /5、关闭操作,步骤相反哈 &
82、#160; try stmt.close(); conn.clo
83、se(); catch (SQLException e) e.printStackTrace(); &
84、#160; 看下效果,有没删除了哈 注意: 在插入的程序处实际上存在了一点问题: 例如:现在要输入姓名为:Mr'Wang INSERT INTO person(name,age) VALUES ('Mr'Wang',30) 一般来说在使用JDBC 操作数据库的时候,往往很少
85、会去使用Statement 进行操作,而经常使用Statement的子接口PreparedStatement进行操作。 PreparedStatement 是预处理,表示先在数据库中插入一条信息,但是信息的内容暂时不确定,等待用户通过专门的方法进行插入。JDBCDemo05:package com.redking.jdbc.demo; import java.io.BufferedReader; import java.io.IOException;
86、; import java.io.InputStreamReader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class JDBCDemo05
87、 public static final String DBDRIVER = "sun.jdbc.odbc.JdbcOdbcDriver" public static final String DBURL = "jdbc:odbc:testDB"
88、0; public static void main(String args) String name = null;
89、160;int age = 0; BufferedReader buf = new BufferedReader(new InputStreamReader(System.in); System.out.println(&q
90、uot;请输入姓名:"); try name = buf.readLine();
91、 catch (IOException e1) e1.printStackTrace();
92、0; System.out.println("请输入年龄:"); try
93、160; age = Integer.parseInt(buf.readLine(); catch (NumberFormatException e1)
94、 / TODO Auto-generated catch block e1.printStackTrace();
95、 catch (IOException e1) / TODO Auto-generated catch block
96、; e1.printStackTrace(); /数据库连接对象
97、0; Connection conn = null; /数据库操作对象 PreparedStatement pstmt = null;
98、0; /1、加载驱动程序 try Class.forName(DBDRIVER
99、); catch (ClassNotFoundException e) e.printStackTrace();
100、 /2、连接数据库 /通过连接管理器连接数据库 &
101、#160; try conn = DriverManager.getConnection(DBURL);
102、; catch (SQLException e) e.printStackTrace();
103、60; /3、向数据库中插入一条数据 String sql = "INSERT INTO person(name,age) VALUES (?,?)"
104、0; System.out.println(sql); try /现在暂时占着,只是还不执行哈
105、0; pstmt = conn.prepareStatement(sql); catch (SQLException e) &
106、#160; e.printStackTrace(); /4、执行语句
107、160; /执行语句之前必须设置内容 try
108、160;/设置好内容 pstmt.setString(1,name); pstmt.setInt(2, age)
109、; /执行数据库更新操作 pstmt.executeUpdate();
110、160; catch (SQLException e) e.printStackTrace(); &
111、#160; /5、关闭操作,步骤相反哈 try &
112、#160; pstmt.close(); conn.close(); catch
113、60;(SQLException e) e.printStackTrace(); &
114、#160; 看下效果,现在有没报错哈 看下数据库中有没写入了哈 一般在实际的开发中都去使用PreparedStatement,而很少会有人去直接使用Statement进行操作。 进行查询: 一般查询指的是执行SELECT 语句,SELECT 语句执行后实际上是会返回一组的数据(在内存中保存的)。 必须使用ResultSet接口进行接收,实际此处也不是很清楚会有多行数据。 Next()表示把指针向下移动一个位置。JDBCDemo06:package com.redking.jdbc.demo
115、; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public cl
116、ass JDBCDemo06 public static final String DBDRIVER = "sun.jdbc.odbc.JdbcOdbcDriver" public static final String DBURL = "jdbc:od
117、bc:testDB" public static void main(String args) /数据库连接对象
118、 Connection conn = null; /数据库操作对象 PreparedStatement pstmt = null; &
119、#160; /数据库查询结果集对象 ResultSet rs = null; /1、加载驱动程序
120、0; try Class.forName(DBDRIVER);
121、;catch (ClassNotFoundException e) e.printStackTrace(); &
122、#160; /2、连接数据库 /通过连接管理器连接数据库 try &
123、#160; conn = DriverManager.getConnection(DBURL); catch (SQLException e)
124、0; e.printStackTrace(); /3、向数据库中插入一条数据
125、0; /查询全部数据,查询数据的时候绝对不要写“*” String sql = "SELECT id,name,age FROM person" &
126、#160; System.out.println(sql); try /现在暂时占着,只是还不执行哈
127、 pstmt = conn.prepareStatement(sql); catch (SQLException e)
128、0; e.printStackTrace(); /4、执行语句
129、0; /执行语句之前必须设置内容 try
130、; /执行数据库查询操作,返回的结果全部放在ResultSet之中 rs = pstmt.executeQuery(); catch (SQL
131、Exception e) e.printStackTrace(); &
132、#160; /下面开始依次循环取出内容,先判断后面有没内容,如果有则输出哈 try while(rs.next()&
133、#160; /Result必须按类型取值
134、60; int id = rs.getInt("id"); String name = rs.getString("name");
135、 int age = rs.getInt("age");
136、 System.out.println("ID = "+id+";name = "+name+";age = "+age);
137、160; catch (SQLException e1) / TODO Auto-generated catch block
138、 e1.printStackTrace(); /5、关闭操作,步骤相反哈 &
139、#160; try rs.close();
140、60; pstmt.close(); conn.close(); catch (SQLException e) e.p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商务合同范本-工程合同模板
- 品牌策划合作协议-合同范本
- 合伙协议书范文
- 2024房屋租赁居间合同
- 2024运输合同物流运输合同纠纷案例
- 2024设立有限责公司出资协议模板
- 2024年冷库转让协议合同书
- 深圳发展银行委托贷款操作流程
- 2024年学校食堂用工合同协议书样本
- 北京借款合同的范本2024年
- 行政许可执法案卷自评表
- 最新一年级数学上册比轻重题汇总
- CNAS-GL004:2018《标准物质_标准样品的使用指南》(2019-2-20第一次修订)
- 科普知识讲座(火箭)PPT精选课件
- 高三一模动员主题班会-课件(PPT演示)
- 车辙的形成原因及预防措施
- 风电场升压站建筑工程主要施工方案
- 第五讲新闻评论的结构与节奏
- 从PK-PD看抗菌药物的合理应用
- 加热炉施工方案
- 意象对话放松引导词2[生活经验]
评论
0/150
提交评论