2018/11/23 面向对象与多线程综合实验-数据库操作 教师:段鹏飞.

Slides:



Advertisements
Similar presentations
JDBC 基础知识 第 七 章.  Java 的高级组件 回顾 1 本章相关词汇 单 词说 明 driver 驱动,驱动程序 connection 连接 manager 管理器 statement 语句 prepared 预备的,预编译的 result 结果 create 创建,创造 execute.
Advertisements

JSP 与数据库 SQL 语言简介 SQL 语言简介 JDBC 简介 JDBC 简介 使用 JDBC 连接数据库 使用 JDBC 连接数据库 访问数据库 数据库访问应用举例.
第十章 Java 数据库编程. 内容提要 数据库有关概念; 介绍 JDBC 的结构; 重点介绍 JDBC 访问几种数据库的基本过程;
软件编程基础 一、程序的编辑 Java 源程序是以 Java 为后缀的简单的文本文件,可以用各种 Java 集成开发环境中的源代码编辑器来编写,也可以用其他文 本编辑工具,如 Windows 中的记事本或 DOS 中的 EDIT 软件等。 利用文字编辑器编写下列程序 public class Hello.
Java 技术与应用 数据库应用 ( 第 14 章 ) 西安交大 卫颜俊 2008 年 12 月 电子信箱: QQ: 网站 : /java.
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
SQL的简单查询.
第14章 JDBC技术和数据库开发应用.
十一 ASP对数据库的访问.
Java程序设计教程 第一讲 Java概述.
四資二甲 第三週作業 物件導向程式設計.
配合< JSP程序设计>例子源代码一起使用
MVC Servlet与MVC设计模式.
第12章 JDBC数据库应用程序设计.
第十一讲 JDBC JDBC基础 JDBC驱动程序 JDBC编程 示例.
数据库概述 简而言之,数据库(DataBase)就是一个存储数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。如今,已经存在了Oracle、SQL Server、MySQL等诸多优秀的数据库。在这一章中将讲解的内容包括。
資料庫管理 資管二 賴柏融.
第二章 JAVA语言基础.
第15章 Java数据库连接(JDBC) 15.1 创建数据源 15.2 JDBC-ODBC桥接器 15.3 顺序查询
第三章 控制结构.
外观模式.
JAVA 程式設計與資料結構 第十一章 JDBC.
11-1 JDBC的基礎-說明 昇陽公司提出的資料庫中介軟體(Middleware)稱為「JDBC」(Java Database Connectivity),這是一種開放標準的Java程式介面,可以讓Java程式連接資料庫管理系統, 以Java技術來說,就是實作JDBC驅動程式介面(JDBC Driver.
程式設計實作.
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
JDBC 数据库系统与应用 2014年.
第 8 章 資料的 新增、修改與刪除.
2018/11/15 面向对象与多线程综合实验-数据库操作 教师:段鹏飞.
数据库操作示例 import java.sql.*; //导入java.sql包 public class JDBCDemo {
JAVA vs. SQL Server 建國科技大學 資管系 饒瑞佶 2013/4 V1.
Chapter 12 T-SQL 語法與 ASP.NET.
Java基础 JavaSE异常.
胡鹏 王慧锋 TEL: 数据库系统原理课程设计 实验环节1 胡鹏 王慧锋 TEL:
程式敘述執行順序的轉移 控制與重複、方法 Lecturer:曾學文.
崑山科技大學資訊管理系 伺服網頁程式設計 系統開發細部流程 教師:游峰碩.
電子商務網站建制技術與實習(II) 助教:江宜政 吳昇洋.
班級:博、碩子一甲 授課老師:鐘國家 助教:陳國政
上述代码规范了 INSERT 语句的编写规范,其中:
西南科技大学网络教育系列课程 高级语程序设计(Java) 第五章 继承、接口与范型.
ANDROID PROGRAMMING2.
程式設計實作.
Java语言程序设计 第五部分 Java异常处理.
讲课人:王璞 浙江工商职业技术学院.
5.1.1 使用 ExecuteReader()操作数据库
實作輔導 3 日期: 4/14(星期六) 09:10~12:00、13:10~16:00
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
1、能够使用java进行数据库连接和SQL查询操作
异常及处理.
4、按钮事件.
C/C++/Java 哪些值不是头等程序对象
* 單元:電腦與問題解決 主題:Java物件導向程式設計-類別與物件 台南縣國立善化高中 蕭嘉民 老師
4.2通讯服务模块线程之间传递信息 信息工程系 向模军 Tel: QQ:
第 7 章 JDBC数据库访问.
第14章 外观模式 Deng Song
第11章 ListView延迟加载效果 授课老师:高成珍 QQ号: QQ群: 、
3.2 Mysql 命令行 1 查看数据库 SHOW DATABASES; 2 创建一个数据库test1 CREATE DATABASE test1; 3 选择你所创建的数据库 USE test1; (按回车键出现Database changed 时说明操作成功!) 4 查看现在的数据库中存在什么表.
Ch11 資料庫範例_與Swing結合 物件導向系統實務.
SQL查询语句 蔡海洋.
第三章 SQL Server数据管理.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
第二章 Java语法基础.
第二章 Java基本语法 讲师:复凡.
第二章 Java基本语法 讲师:复凡.
第2章 Java语言基础.
迴圈(重複性結構) for while do while.
判斷(選擇性敘述) if if else else if 條件運算子.
第4章 数据查询.
第二章 Java基础语法 北京传智播客教育
輸出執行結果到螢幕上 如果要將執行結果的文字和數值都「輸出」到電腦螢幕時,程式要怎麼寫? class 類別名稱 {
第二章 Java基本语法 讲师:复凡.
Presentation transcript:

2018/11/23 面向对象与多线程综合实验-数据库操作 教师:段鹏飞

实验5-实验目的 理解 JDBC的特点,结构,应用模型; 了解JDBC驱动程序的类型; 掌握通过JDBC访问数据库执行SQL 语句的方法

实验内容 编写程序,实现原来程序中关于用户、文档信息的数据库操作。 要求:编写程序,将前面课程所编写的档案管理系统的数据管理方式改写为数据库存储。(建议将所有数据库操作封装在DataProcessing类中,并保留原来接口,这样可保持原有程序不做大的变化)。

数据库操作示例 import java.sql.*; //导入java.sql包 public class JDBCDemo { public static void main(String[] args) { String strCon = "jdbc:mysql://59.69.101.2:3306/javadb"; //连接字符串 String strUser = "root"; //数据库用户名 String strPwd = "root"; //口令 System.out.println("正在连接数据库..."); try { //监控异常 Class.forName("com.mysql.jdbc.Driver"); //加载驱动程序 Connection con; //获得连接对象 con = DriverManager.getConnection(strCon, strUser, strPwd); System.out.println("成功连接到数据库。"); Statement sta = con.createStatement(); //创建语句对象 //执行SQL语句 String strSql = "DELETE FROM Friends WHERE [Name] = '郑六'"; int count = sta.executeUpdate(strSql); System.out.println("成功删除" + count + "行数据。"); sta.close(); con.close(); //关闭所有已经打开的资源 } catch (ClassNotFoundException cnfe) { cnfe.printStackTrace(); } catch (SQLException sqle) { sqle.printStackTrace(); } } }

操作结果集 使用Statement对象的executeQuery方法成功执行SELECT语句后,将返回一个包含有结果数据的ResultSet对象,要从该对象中获取数据,将使用到如下方法: 方 法 原 型 说 明 boolean next() throws SQLException 将结果集游标往下移动一行,如果已经到达结果集最后,将会返回false,有可能抛异常,必须捕捉 X getX(String columnName) 获得某个字段的值,X是指具体的数据类型,视数据库表中字段的具体情况而定,该方法有一组,并且每个都有两种重载方法,一种是以字段名称为参数,另一种是以字段索引为参数(字段索引从1开始),有可能抛异常,必须捕捉 X getX(int columnIndex)

操作结果集示例 try { String strCon = "jdbc:odbc:MyODBC"; System.out.println("正在连接数据库..."); Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con; con = DriverManager.getConnection(strCon, "sa", ""); System.out.println("成功连接到数据库。"); Statement sta = con.createStatement(); ResultSet rs = sta.executeQuery("SELECT * FROM Friends"); System.out.println("查询到数据如下:"); while (rs.next()) { //循环将结果集游标往下移动,到达末尾返回false //根据字段名称获得各个字段的值 System.out.print(rs.getString("Name") + "\t"); //获得字符串 System.out.print(rs.getString("Address") + "\t"); //获得字符串 System.out.print(rs.getInt("Telephone") + "\t"); //获得整数 System.out.print(rs.getDate("HireDate") + "\t"); //获得日期型数据 System.out.println(rs.getFloat("Salary")); //获得浮点型数据 } rs.close(); sta.close(); con.close(); } catch (ClassNotFoundException cnfe) { cnfe.printStackTrace(); } catch (SQLException sqle) { sqle.printStackTrace(); }

Sql语句 “select * from [table] where uname=‘”+name+”’ and psw=‘”+psw+”’”; insert into [table] (id, uname, psw) values (1, ‘abc’, ‘123’); update [table] set uname=‘abc’ where id=3; delete from [table] where id=3;

如果要多次执行相似的SQL语句,可以使用PreparedStatemend(预编译语句对象)对象来执行; PreparedStatement接口1 如果要多次执行相似的SQL语句,可以使用PreparedStatemend(预编译语句对象)对象来执行; 通过Connection对象的prepareStatement方法来创建预编译语句对象; PreparedStatement对象会将SQL语句预先编译,这样将会获得比Statement对象更高的执行效率。 方 法 原 型 说 明 PreparedStatement prepareStatement(String sql) throws SQLException 参数sql是要执行的SQL语句,根据指定的SQL语句创建PrepareStatement对象,有可能抛异常,必须捕捉

包含在PreparedStatement对象中的SQL语句可以带有一个或多个参数,使用“?”作为占位符,如: PreparedStatement ps = con.prepareStatement("UPDATE Friends SET Address = ? WHERE Name = ?"); 在执行SQL语句之前,必须使用PreparedStatement对象中的setX方法设置每个“?”位置的参数值; 如: ps.setString(1, "长沙"); ps.setString(2, "王五"); 方 法 原 型 说 明 void setX(int parameterIndex, X x) throws SQLException 将parameterIndex指定的“?”位置指定为x的值,这里X可以指代任意数据类型, “?”的索引从1开始。

PreparedStatement接口3 设置好每个参数的值之后,就可以使用PreparedStatement对象的executeUpdate和executeQuery方法来执行SQL语句,这一点和Statement对象很相似: 方 法 原 型 说 明 int executeUpdate() throws SQLException 用于执行INSERT、DELETE和UPDATE语句,执行成功返回受影响的行数,否则抛出SQLException异常,必须捕捉 ResultSet executQuery() 用于执行SELECT语句,执行成功返回包含有结果数据的ResultSet对象,否则抛出SQLException异常,必须捕捉

PreparedStatement对象示例 String strCon = "jdbc:odbc:MyODBC"; System.out.println("正在连接数据库..."); Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con; con = DriverManager.getConnection(strCon, "sa", ""); System.out.println("成功连接到数据库。"); PreparedStatement ps; //使用带参数的SQL语句创建PreparedStatement对象 ps = con.prepareStatement("UPDATE Friends SET Address = ? WHERE Name = ?"); //设置SQL语句中的参数值 ps.setString(1, "长沙"); ps.setString(2, "王五"); int count = ps.executeUpdate(); //执行命令 System.out.println("成功更新了" + count + "行数据。"); ps.close(); //关闭资源 con.close();

总结 JDBC是使用Java程序操作数据库的技术; 使用 Class类的forName 方法可以将驱动程序加载到 Java 解释器中; 使用DriverManager类的getConnection方法获得Connection对象,从而建立与数据库的连接; 使用Connection对象的createStatement方法创建语句对象,以便执行SQL语句; 使用Statement对象的executeQuery或executeUpdate方法执行SQL语句,并使用ResultSet对象来操作结果数据; PreparedStatement接口允许创建预编译的SQL语句,并使得在后续阶段可以指定语句的参数。

2018/11/23 谢谢