当前位置:文档之家› JDBC入门入门入门入门

JDBC入门入门入门入门

第20章

?JDBC入門

–使用JDBC連接資料庫

–使用JDBC進行資料操作

簡介JDBC

簡介JDBC

?JDBC資料庫驅動程式依實作方式可以分為四個類型

–Type 1:JDBC-ODBC Bridge

–Type 2:Native-API Bridge

–Type 3:JDBC-middleware

–Type 4:Pure Java Driver

連接資料庫

?載入JDBC驅動程式

try {

Class.forName("com.mysql.jdbc.Driver");

}

catch(ClassNotFoundException e) {

System.out.println("找不到驅動程式類別");

}

連接資料庫

?提供JDBC URL

–協定:子協定:資料來源識別

jdbc:mysql://主機名稱:連接埠/資料庫名稱?參數=值&參數=值

jdbc:mysql://localhost:3306/demo?user=root&password=123 jdbc:mysql://localhost:3306/demo?user=root&password=123& useUnicode=true&characterEncoding=Big5

連接資料庫

?取得Connection

try {

String url= "jdbc:mysql://localhost:3306/demo?" +

"user=root&password=123";

Connection conn= DriverManager.getConnection(url);

....

}

catch(SQLException e) {

....

}

String url= "jdbc:mysql://localhost:3306/demo";

String user = "root";

String password = "123";

Connection conn= DriverManager.getConnection(url,

user, password);

簡單的Connection工具類別?取得Connection的方式,依所使用的環境

及程式需求而有所不同

?設計一個DBSource介面

package onlyfun.caterpillar;

import java.sql.Connection;

import java.sql.SQLException;

public interface DBSource{

public Connection getConnection() throws SQLException;

public void closeConnection(Connection conn) throws SQLException; }

簡單的Connection工具類別

public class SimpleDBSource implements DBSource{

public SimpleDBSource(String configFile) throws IOException,

ClassNotFoundException{ props = new Properties();

props.load(new FileInputStream(configFile));

url= props.getProperty("onlyfun.caterpillar.url");

user = props.getProperty("https://www.doczj.com/doc/238124734.html,er");

passwd= props.getProperty("onlyfun.caterpillar.password");

Class.forName(

props.getProperty("onlyfun.caterpillar.driver"));

}

public Connection getConnection() throws SQLException{

return DriverManager.getConnection(url, user, passwd);

}

public void closeConnection(Connection conn) throws SQLException{ conn.close();

}

}

簡單的Connection工具類別onlyfun.caterpillar.driver=com.mysql.jdbc.Driver onlyfun.caterpillar.url=jdbc:mysql://localhost:3306/demo https://www.doczj.com/doc/238124734.html,er=root

onlyfun.caterpillar.password=123456

DBSource dbsource= new SimpleDBSource();

Connection conn= dbsource.getConnection();

if(!conn.isClosed()) {

System.out.println("資料庫連接已開啟…");

}

dbsource.closeConnection(conn);

if(conn.isClosed()) {

System.out.println("資料庫連接已關閉…");

}

簡單的連接池(Connection pool)?資料庫連接的取得是一個耗費時間與資源

的動作

–建立Socket connection

–交換資料(使用者密碼驗證、相關參數)

–資料庫初始會話(Session)

–日誌(Logging)

–分配行程(Process)

–…

簡單的連接池(Connection pool)

public synchronized Connection getConnection()

throws SQLException{ if(connections.size() == 0) {

return DriverManager.getConnection(url, user, passwd);

}

else {

int lastIndex= connections.size() -1;

return connections.remove(lastIndex);

}

}

public synchronized void closeConnection(Connection conn)

throws SQLException{ if(connections.size() == max) {

conn.close();

}

else {

connections.add(conn);

}

}

簡單的連接池(Connection pool)DBSource dbsource= new BasicDBSource("jdbc2.properties"); Connection conn1 = dbsource.getConnection();

dbsource.closeConnection(conn1);

Connection conn2 = dbsource.getConnection();

System.out.println(conn1 == conn2);

onlyfun.caterpillar.driver=com.mysql.jdbc.Driver

onlyfun.caterpillar.url=jdbc:mysql://localhost:3306/demo https://www.doczj.com/doc/238124734.html,er=root

onlyfun.caterpillar.password=123456

onlyfun.caterpillar.poolmax=10

簡單的連接池(Connection pool)

?初始的Connection數量

?Connection最大idle的數量

?如果超過多久時間,要回收多少數量的Connection

?Proxool

–https://www.doczj.com/doc/238124734.html,/index.html ?Apache Jakarta的Common DBCP –https://www.doczj.com/doc/238124734.html,/commons/dbcp/

Statement、ResultSet

?要執行SQL的話,必須取得

java.sql.Statement物件,它是Java當中一

個SQL敘述的具體代表物件

Statement stmt = conn.createStatement();

?插入一筆資料,可以如下使用Statement的

executeUpdate()方法

stmt.executeUpdate("INSERT INTO t_message VALUES(1, 'justin', " + "'justin@https://www.doczj.com/doc/238124734.html,', 'mesage...')");

Statement、ResultSet ?executeUpdate()會傳回int結果,表示資料變動的

筆數

?executeQuery()方法則是用於SELECT等查詢資料庫的SQL

?executeQuery()會傳回java.sql.ResultSet物件,代表查詢的結果

?可以使用ResultSet的next()來移動至下一筆資料,它會傳回true 或false表示是否有下一筆資料

?使用getXXX()來取得資料

Statement、ResultSet

?指定欄位名稱來取得資料

ResultSet result =

stmt.executeQuery("SELECT* FROM t_message"); while(result.next()) {

System.out.print(result.getInt("id") + "\t");

System.out.print(result.getString("name") + "\t");

System.out.print(result.getString("email") + "\t");

System.out.print(result.getString("msg") + "\t");

}

Statement、ResultSet

?使用查詢結果的欄位順序來顯示結果

ResultSet result =

stmt.executeQuery("SELECT* FROM t_message"); while(result.next()) {

System.out.print(result.getInt(1) + "\t");

System.out.print(result.getString(2) + "\t");

System.out.print(result.getString(3) + "\t");

System.out.print(result.getString(4) + "\t");

}

Statement、ResultSet ?Statement的execute()可以用來執行SQL,並可

以測試所執行的SQL是執行查詢或是更新

?傳回true的話表示SQL執行將傳回ResultSet表示查詢結果,此時可以使用getResultSet()取得ResultSet物件

?如果execute()傳回false,表示SQL執行會傳回更新筆數或沒有結果,此時可以使用getUpdateCount()取得更新筆數

?如果事先無法得知是進行查詢或是更新,就可以使用execute()

Statement、ResultSet finally {

if(stmt!= null) {

try {

stmt.close();

}

catch(SQLException e) {

e.printStackTrace();

}

}

if(conn!= null) {

try {

dbsource.closeConnection(conn);

}

catch(SQLException e) {

e.printStackTrace();

}

}

}

Statement、ResultSet ?Connection物件預設為「自動認可」(auto commit)

?getAutoCommit()可以測試是否設定為自動認可

?無論是否有無執行commit()方法,只要SQL 沒有錯,在關閉Statement或Connection 前,都會執行認可動作

#综合卷(数据库+JDBC+JavaWeb基础)

1. 下面语句错误的原因是: Update departments set department_id=300 where department_id=60; ERROR 位于第1 行: ORA-02292: 违反完整约束条件(HR.EMP_DEPT_FK) - 已找到子记录日志 A.where条件语法错误 B.违反主键约束,department_id为300的记录已经存在 C.60号部门下已经有员工,修改60号部门编号将违反完整性约束条件 D.60号部门不存在 答案:C 2. 下面哪条语句可以取出薪水最高的前三个人: A.select * from (select * from employees order by salary ); B.select * from (select * from employees order by salary desc ) where rownum<=3; C.select * from (select * from employees order by salary ) where rownum<=3; D.select * from employees where rownum<=3 order by salary desc; 答案:B 3. 下面哪种情况会使没有完成的事务“隐式”提交: A.执行多个查询语句 B.执行Commit C.执行create table 命令 D.服务器掉电 答案:C 4. 哪一子句可实现SELECT 语句查询员工平均工资小于5000的部门信息: A.GROUP BY dept_id HAVING AVG(sal) < 5000 B.GROUP BY AVG(sal) HAVING AVG(sal) < 5000 C.GROUP BY dept_id WHERE AVG(sal) < 5000 D.GROUP BY AVG(sal) < 5000 答案:A 5. SQL语言中修改表结构的命令是: A.MODIFY TABLE B.MODIFY STRUCTURE C.ALTER TABLE D.ALTER STRUCTURE 答案:C 6. 在Oracle中,用于在多个会话之间控制对数据的并发访问的是: A.锁 B.索引 C.分区 D.键 答案:A 7. 当你执行以下查询语句: SELECT empno,ename FROM emp WHERE empno =7782 OR empno =7876; 在WHERE语句中,可以实现和OR相同功能的操作符是:

JDBC连接MySQL

JDBC连接MySQL经典方案 最近在学习数据库开发的一些实例,这里浅谈一下用JDBC连接数据库MySQL(当然也可以连接SQL Sever或Oracle了,只是我更喜欢开源软件,同时也更简单)。 首先正确安装好MySQL,建立好数据库studentinfo mysql>create database studentinfo; 然后编写java代码,ConnectToMySQL.java import java.sql.*; public class ConnectToMySQL { public static Connection getConnection() throws SQLException , https://www.doczj.com/doc/238124734.html,ng.ClassNotFoundException{ String url = "jdbc:mysql://localhost:3306/studentinfo"; Class.forName("com.mysql.jdbc.Driver"); String userName = "root"; String password = ""; Connection con = DriverManager.getConnection(url,userName,password); return con; } public static void main(String[] args) { try{ Connection con = getConnection(); Statement sql = con.createStatement(); sql.execute("drop table if exists student"); sql.execute("create table student(id int not null auto_increment,name varchar(20) not null default 'name',math int not null default 60,primary key(id));"); sql.execute("insert student values(1,'AAA','99')"); sql.execute("insert student values(2,'BBB','77')"); sql.execute("insert student values(3,'CCC','65')"); String query = "select * from student"; ResultSet result = sql.executeQuery(query); System.out.println("Student表数据如下:"); System.out.println("---------------------------------"); System.out.println("学号"+" "+"姓名"+" "+"数学成绩");

《Java 2实用教程(第5版)》

《Java程序设计》课程教学大纲 Java Programming 一、课程的性质和教学目的 课程性质:Java不依赖平台的特点使得它受到广泛的关注,已成为网络时代最重要的编程语言之一。目前,Java语言不仅是一门正在被广泛使用的编程语言,而且已成为软件开发人员应当掌握的一门基础语言,因为很多新的技术领域都涉及到了Java。国内外许多大学已将Java语言列入了本科教学计划,掌握Java已经成为共识。《Java程序设计》是软件工程专业、计算机科学与技术等相关专业的一门重要的程序设计语言类的必修课程。 教学目的:通过本课程的学习,要求学生达到下列目标。 1. 理解面向对象程序设计的思想,掌握面向对象的3个特性:封装性、继承性和多态性。 2. 理解Java的平台无关性,掌握用Java语言进行面向对象程序设计的方法。 3. 掌握Java中常用工具类的使用,及用Java设计图形用户界面程序的方法和技巧。 4. 培养学生应用Java解决和处理实际问题的思维方法与基本能力。 二、课程教学内容 1. Java语言基础知识 Java程序的开发环境;Java程序的基本结构;Java语言的基本数据类型、表达式、语句、数组。Java 编程规范。 2. 类与对象 类的定义,对象的创建和使用,对象的访问权限。对象的封装性。 3. 继承、多态与接口 子类的定义,继承的含义,方法的重写和接口及接口回调。理解继承性、与多态性。 4. 字符串与常用类 字符串,正则表达式,Data类,Math类和Calendar类。 5. GUI编程 Java事件处理模型,常用组件的使用。 6. 输入、输出流 Java 输入/出流类;文件和文件的读写。掌握流的套接。 7. JDBC Derby数据库的实用,使用JDBC连接数据库的过程,进行查询、更新、插入数据的方法。 8.网络编程 URL类 ,InetAdress类,套接字,UDP数据报 9.集合框架 三、课程教学的基本要求 1.基本知识 了解Java的特点,理解Java的平台无关性,掌握Java语言的语法知识和常用工具类的使用,掌握Java事件的处理模型及GUI编程。掌握JDBC的使用。 2.基本理论和方法 理解面向对象的思想,掌握面向对象程序设计的方法。

java编程(JDBC数据库编程1数据库基础)

第10章数据库编程 ---10.1 数据库基础1 知识点 1.1 上次内容 1.IO操作实例 1.2 习题讲解 1.无 1.3 本次内容 1.数据库基础 2.Access数据库 3.表 4.查询 2具体内容 10.1 数据库基础 10.1.1 数据库基本概念:4D ?数据(DATA):存放在数据库中的信息内容。 ?数据库(DATABASE):具体数据库管理系统中的某一个数据库。 ?数据库管理系统(DBMS):SQL Server、Oracle、DB2、MySQL、Access等 ?数据库系统(DBS):学生信息管理系统、教务管理系统等。 10.1.2 数据库基本概念:数据模型 ?层次模型:层次模型只有一个根节点 ?网状模型:它表示多个从属关系的层次结构,呈现一种交叉关系的网络结构 ?关系模型(Relational Model ):按照某种平行序列排列的数据集合关系。(用“二维表”表示数据)。

?面向对象模型 10.1.3 数据库基本概念:三级模式体系结构 ?外部级、概念级、内部级 ?外模式、模式、内模式 10.2 Access数据库 Access是微软公司的Microsoft Office系列软件的一个重要组成部分。它是一个运行于Windows平台上的关系数据库管理系统,通过各种数据库对象对数据进行控制和管理。 Access数据库中包括表、查询、窗体、报表、数据访问页、宏和模块7种不同的对象,这些对象用于收集、存储、检查和链接各种不同的信息。 Access 2000的主要功能如下所述。 ●定义表。 ●定义表之间的关系。 ●强大的数据处理能力。 ●创建Web页。 ●开发应用程序。 Access提供了创建数据库、表、查询、窗体、报表和数据访问页等数据库对象的向导。 Access还提供了管理大量数据所需要的数据定义、数据操作和数据控制功能。 Access支持ODBC(开放式数据库连接)特性,用户能访问许多外部数据库(如Oracle和Sybase)的数据。

JDBC结果集处理教程

一.查询 ResultSet对象是由统一形式的列组织的数据行组成。ResultSet对象一次只能看到一个数据行,使用next()方法走到下一个数据行 获得一行数据后,ResultSet对象可以使用getXXX方法获得字段值,将位置索引(第一列为1)或字段名传递给getXXX方法的参数 例如: ResultSet rs=sql.executeQuery("select * from 成绩表); String str=""; while(rs.next()) { str=rs.getString("姓名"); System.out.println(str); } 1.顺序查询 使用结果集合Result的next()方法,可以顺序的查询。next()方法返回一个boolean型数据。当游标移动到最后一行之后返回false 2.游动查询 ###当需要在结果集中前后移动或显示结果集指定的一条记录的时候,要用到游动查询 @必须使用下述方法先获得一个Statement对象 Statement stmt=con.createStatement(int type,int concurrency); @根据参数type,concurrency的取值情况,stmt返回响应类型的结果集 @ResultSet re=stmt.executeQuery(Sql语句) ###type的取值决定滚动的方式 static int TYPE_FORWARD_ONLY 该常量指示指针只能向前移动的 ResultSet 对象的类型。 static int TYPE_SCROLL_INSENSITIVE 该常量指示可滚动但通常不受其他的更改影响的 ResultSet 对象的类型。 static int TYPE_SCROLL_SENSITIVE 该常量指示可滚动并且通常受其他的更改影响的 ResultSet 对象的类型。

JDBC学习手册

JDBC (Java DataBase Connectivty) 整理人:徐仕锋(Eric) 版本号:v2009-1-20

一、JDBC概述 1概述 JDBC从物理结构上说就是Java语言访问数据库的一套接口集合。从本质上来说就是调用者(程序员)和实现者(数据库厂商)之间的协议。JDBC的实现由数据库厂商以驱动程序的形式提供。JDBC API 使得开发人员可以使用纯Java的方式来连接数据库,并进行操作。ODBC:基于C语言的数据库访问接口。 ●JDBC也就是Java版的ODBC。 ●JDBC的特性:高度的一致性、简单性(常用的接口只有4、5个)。 2JDBC的发展 没有JDBC之前java程序是这样连接各种数据库的。 缺点:1、要求程序员必须熟悉编写java程序连接各种数据库的驱动。 2、移植性很不好,更改数据库必须重新编写连接数据库的驱动程序。

用了JDBC以后java连接各种数据库方便多了! 3JDBC的API介绍 在JDBC中包括了两个包:java.sql和javax.sql。 ①java.sql 基本功能。这个包中的类和接口主要针对基本的数据库编程服务,如生成连 接、执行语句以及准备语句和运行批处理查询等。同时也有一些高级的处理, 比如批处理更新、事务隔离和可滚动结果集等。 ②javax.sql 扩展功能。它主要为数据库方面的高级操作提供了接口和类。如为连接管理、 分布式事务和旧有的连接提供了更好的抽象,它引入了容器管理的连接池、分 布式事务和行集(RowSet)等。 主要对象和接口: 4驱动程序工作分类 驱动程序按照工作方式分为四类: 1、JDBC-ODBC bridge + ODBC 驱动 JDBC-ODBC bridge桥驱动将JDBC调用翻译成ODBC调用,再由ODBC驱动翻译 成访问数据库命令。 优点:可以利用现存的ODBC数据源来访问数据库。 缺点:从效率和安全性的角度来说的比较差。不适合用于实际项目。 2、基于本地API的部分Java驱动 我们应用程序通过本地协议跟数据库打交道。然后将数据库执行的结果通过驱动程 序中的Java部分返回给客户端程序。

实验8-jdbc数据库访问(优.选)

实验8 JDBC访问数据库 一、实验目的 1. 掌握使用传统的方法访问数据库; 2. 掌握使用数据源的方法访问数据库。 二、实验原理 数据库应用是Web应用开发的一个重要应用。Web应用程序访问数据库有两种方法:传统的方法和使用JNDI数据源的方法。 传统方法访问数据库的步骤是:①加载数据库驱动程序;②建立连接对象;③创建语句对象;④获得结果集;⑤关闭有关连接对象。 使用数据源访问数据库的步骤是:①配置数据源(局部数据源或全局数据源);②通过JNDI机制查找命名数据源;③通过数据源对象创建连接对象;④其他与传统方法一致。 三、实验内容与步骤 (一)使用传统方法通过JSP页面访问数据库 【步骤1】创建数据库。假设在PostgreSQL建立了一个名为bookstore的数据库,在其中建立books表,代码如下: CREATE TABLE books ( bookid character(5) PRIMARY KEY, --书号 title varchar2(80), --书名 author character varying(20), --作者 publisher character varying (40), --出版社 price real --价格 ); 向books表中插入几条记录,代码如下: INSERT INTO books V ALUES ('204','Head First Servlets & JSP', 'Bryan Basham', '中国电力出版社',98.00); INSERT INTO books V ALUES ('201', 'Servlets 与JSP 核心教程', 'Hall Marty','清华大学出版社',45); INSERT INTO books V ALUES ('202', 'Tomcat与Java Web 开发技术祥解', '孙卫琴', '机械工业出版社',45); INSERT INTO books V ALUES ('203', 'JSP 应用开发技术', '柳永坡','人民邮电出版社',52); INSERT INTO books V ALUES ('205', 'J2EE 1.4 编程指南', 'Spielman Sue','电子工业出版社',68); 注意:需要将数据库的JDBC驱动程序安装到应用程序的WEB-INF\lib目录中。 【步骤2】使用下面JSP页面displayBooks.jsp访问books表中的数据。 <%@ page contentType="text/html; charset=gb2312" %> <%@ page import="java.sql.*"%> Database Access Test

实验七 JDBC数据库编程基本知识

§12 JDBC 数据库编程基本知识 §12.1实验目的、内容及性质 理解和掌握JDBC 的结构以及JDBC 与数据库应用编成之间的关系,掌握DriverManage 、Connection 、Ststement 等数据库类的常用方法。 实验性质:综合、必做 实验学时:4学时 §2.8.2问题及思考 1、什么是ODBC数据源,如何定义数据源? 2、什么是JDBC-ODBC桥 3、读写数据库基本步骤总结 4、什么是结果集,如何从结果集中读数据 5、几个不同的Statement命令对象的使用总结 §2.8.3实验指导 一、JDBC数据库编程基本步骤 1、利用ODBC-JDBC桥读取Access数据库 实现Java读取Access数据库。首先设置ODBC,在“控制面板”的“管理工具”中找到“数据源(ODBC)”,在出现的“ODBC数据源管理器”窗口中选择“系统DSN”(必须是系统DSN)。 单击“添加”按钮,在“创建新数据源”对话框中选择“Microsoft Access Driver”,如图7-19所示。 设置系统DSN

选择Access驱动程序 单击“完成”按钮,在数据源名称中输入“grade”,单击“选择”按钮,找到建立好的“person. mdb”文件(确保文件不是只读的),如图7-20所示。 建立数据 数据源建立完毕。读取的程序。 Connection conn = null; Statement stmt = null; ResultSet rs = null; try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(ClassNotFoundException ce){ out.println(ce.getMessage()); }

jdbc驱动下载及连接方式

各种数据库驱动 数据库名称下载地址说明 Mysql https://www.doczj.com/doc/238124734.html,/prod ucts/connector/j/ Shipped. But need to download the latest for MySQL 4.1 or higher. Oracle https://www.doczj.com/doc/238124734.html,/projec t/showfiles.php?group_id=33 291 software/tech/java/sqlj_jdbc/ index.html Included. SQL Server by jTDS https://www.doczj.com/doc/238124734.html,/pro ject/showfiles.php?group_i d=33291 Included. Support Microsoft SQL Server (6.5, 7, 2000 and 2005) Postgres https://www.doczj.com/doc/238124734.html,/ download.html Included 7.3 JDBC 3 SAP DB https://www.doczj.com/doc/238124734.html,/sap _db_jdbc.htm Included. SyBase by jTDS http://jtds.sourceforge.ne t/ Included. Support Sybase (10, 11, 12) 各种驱动的连接方法 1.MySQL(https://www.doczj.com/doc/238124734.html,) mysql-connector-java- 2.0.14-bin.jar ; Class.forName( "org.gjt.mm.mysql.Driver" ); cn=DriverManager.getConnection( "jdbc:mysql: //MyDbComputerNameOr IP:3306/myDatabaseName", sUsr, sPwd ); 2. PostgreSQL(https://www.doczj.com/doc/238124734.html,) pgjdbc2.jar ; Class.forName( "org.postgresql.Driver" ); cn=DriverManager.getConnection( "jdbc:postgresql: //MyDbComputerNameOrIP/myDatabaseName", sUsr, sPwd ); 3.Oracle(https://www.doczj.com/doc/238124734.html,/ip/deploy/database/oracle9i/) classes12.zip ; Class.forName("oracle.jdbc.driver.OracleDriver"); cn=DriverManager.getConnection("jdbc:oracle: thin:MyDbComputerNameOrIP:1521:ORCL", sUsr, sPwd ); 4. Sybase(https://www.doczj.com/doc/238124734.html,) jconn2.jar ; Class.forName( "com.sybase.jdbc2.jdbc.SybDriver" ); cn = DriverManager.getConnection( "jdbc:sybase:Tds:MyDbComputerNameOrIP :2638", sUsr, sPwd ); //(Default-Username/Password: "dba"/"sql") 5. Microsoft SQLServer(https://www.doczj.com/doc/238124734.html,) ;

JDBC练习题

JDBC练习题 1,选择题 1。哪个是正确的JDBC选择? A。JDBC是一种通用的数据库连接技术。JDBC技术不仅可以用在Java程序 中,也可以用在像C++这样的程序中 B。JDBC技术是SUN公司专门为连接Oracle数据库而设计的。连接其他 数据库只能使用微软的ODBC解决方案 C。微软的ODBC和SUN公司的JDBC解决方案可以跨平台使用。只有JDBC的性能 高于ODBC D。JDBC只是一个抽象的调用规范。底层程序实际上依赖于每个数据库的驱动程序文件。2.选择JDBC可以执行的语句(多选)。所有以上可以是 3。选择推荐用于Java程序开发的常用数据库(多选)a . Oracle b . SQL server 2000 c . MySQL d . db 2 4 .哪一个不是JDBC使用的接口和类?系统类连接结果集 5 .哪种连接方法可以用来建立准备状态接口? a . create preparentation() b . prepare station() c . create preparentation() d . prepared statement()6。下面正确的描述是什么?

A。准备语句继承自语句b。语句继承自准备语句c。结果集继承自语句 d。调用语句继承自准备语句7。下面的描述错误是什么? A的executeQuery()方法。语句返回一个结果集。 B的executeUpdate()方法。语句返回更新是否成功的布尔值。在结果集中使用getString()可以获得对应于数据库中字符类型的 值 d。结果集中的next()方法将使结果集中的下一行成为当前的第8行。如果数据库中的某个字段是数字类型的,它可以在结果集中获得哪种方法? a . getnumberic() b . getdouble() c . getbigdecimal() d . getfloat() 9。使用Jdbc中的事务,您想用什么方法回滚事务? A。连接的提交()连接的设置自动提交()连接的回滚()连接的关闭() 10。在JDBC编程中,在执行以下的“从雇员处选择姓名、等级、序列号 ”的SQL语句后,哪两个代码可以获得rs数据的第一列?a . RS . GetString(0);b . RS . GetString(\ c . RS . GetString(1); D。rs.getString(\ 11。什么是 A。准备语句继承了语句b。准备语句可以有效地防止 D的SQL注入操作。PreparedStatement可以存储预编译语句,从而提高执行效率12。下列哪个选项是加载MySQL驱动程序的正确选

实验 JDBC基础(综合)

实验JDBC基础(综合) 一、相关知识点 1、JDBC基本概念 2、元数据 二、实验目的: 理解元数据的概念,利用jdbc完成复杂业务逻辑。 三、实验内容: 1、在booklib工程的DBUtil类中增加main函数,并在main函数中编写代码,列出 booklib数据库中所有表的名字。 提示:会用到如下代码片段,请自行测试resultset中那一列为表名 【实验结果与分析】 A、写出代码部分。 public static void main(String[] args) throws SQLException { DatabaseMetaData dbmd = null; Connection conn = null; conn = DBUtil.getConnection(); dbmd = conn.getMetaData(); String types[] = {"VIEW","TABLE"}; ResultSet rs = dbmd.getTables(null, null, "%", types); while(rs.next()) { System.out.print(rs.getString("TABLE_NAME")+"\t"); }

2、在上述main函数中,增加代码,提取特定表中的字段信息,要求输出字段名字和数据类型。 提示:除了用课件中的方法,还可以用如下代码片段: A、写出代码部分。 public static void main(String[] args) throws SQLException { DatabaseMetaData dbmd = null; Connection conn = null; conn = DBUtil.getConnection(); dbmd = conn.getMetaData(); //String types[] = {"VIEW","TABLE"}; ResultSet rs = dbmd.getColumns(null, "%", "beanbook","%"); while(rs.next()) { System.out.print(rs.getString("COLUMN_NAME")+" "); System.out.println(rs.getString("TYPE_NAME")); } } 3、在BookLendManager类中设计函数public void calPenal();完成如下功能:提取所有超期未归还的借阅记录,输出其读者id、图书条码、借阅时间、超期天数(假设用户仅能借阅30天,请自行将数据库表中的已有数据的借阅时间往前调);计算每条数据的罚金(罚金算法为超期30天内每天0.1元,31-60天每天0.15元,60天以上每天0.2元),并写入数据库表的penalSum字段中。函数编写完成后,通过main函数进行测试验证。 注:请注意事务控制 【实验结果与分析】 A、请提供程序代码。

JDBC-ODBC桥连access教程

JDBC-ODBC桥连access教程 我电脑win7x64位,事先安装了64位的eclipse,64位的JDK版本8,目前最高版本,由于第一次接触access数据库,什么ODBC数据源,和有什么桥连的,加上老师还要摧着交实验,我头都大了,完全崩溃!!废话不多说了,下面就来做吧。 运行过程中会出现的错误有: 1、ctrl+shift+t 找不到sun.jdbc.odbc这个类 2、No suitable driver found for jdbc 3、SQLException: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 4、找不到Microsoft Access Driver(*.mdb)ODBC驱动程序 解决过程如下: 一、安装0ffice Access 2010 下面附下载地址:64位 https://www.doczj.com/doc/238124734.html,/s/1c0yG6q8 安装过程压缩包里有说明文件。 二、建立ODBC数据源 安装好office 2010后,一般会在控制面板的管理工具下的ODBC中找到MS ACCESS DATABASE 字样选择添加:如下图

结果显示不出Access Diver,这时就要通过 C:/Windows/SysWOW64/odbcad32.exe目录打开,这里要重点说下: C:/Windows/SysWOW64/odbcad32.exe创建的是32位的ODBC C:\Windows\System32/odbcad32.exe创建的是64位的ODBC 但是使用system32创建64位ODBC过程中会出现和上面用控制面板一样的结果,就是找不到Access驱动,所以只能创建32位的ODBC。 另外如果建立32位的ODBC就要用32位的JDK , 建立64位的ODBC要用64位的JDK. 见下图:

1.JDBC基础及应用_选择题

1. JDBC驱动程序有几种类型:() A 两种 B 三种 C 四种 D 五种 2. 典型的JDBC程序按()顺序编写? A 释放资源 B 获得与数据库的物理连接 C 执行SQL命令 D 注册JDBC Driver E 创建不同类型的Statement F 如果有结果集, 处理结果集 3. 在下列选项中,哪一个可执行同构的sql语句?() A CallableStatement B Statement C PreparedStatement 4. 在下列选项中,哪一个可执行异构的sql语句?() A CallableStatement B Statement C PreparedStatement 5. 在下列选项中,哪一个可用于调用存储过程或函数?() A CallableStatement B Statement C PreparedStatement 6.JDBC编程的异常类型分为: A. SQLException B. SQLError C. SQLWarning D. SQLFatal E. SQLTruncation 7. 接口Statement中定义的execute方法的返回类型以及代表的含义分别是:() A 结果集ResultSet B 受影响的记录数量 C 有无ResultSet返回 8. 接口Statement中定义的executeQuery方法的返回类型是:() A ResultSet B int

C boolean 9. 接口Statement中定义的executeUpdate方法的返回类型以及锁代表的含义分别是:() A ResultSet B int C boolean D 受影响的记录数量 E 有无ResultSet返回 10. 如果要限制某个查询语句返回的最多的记录数,可以通过调用Statement的什么方法来 实现?() A setFetchSize B setMaxFieldSize C setMaxRows 11. 以下哪些是定义在ResultSet中用于Cursor定位的方法:ABCEF A next() B beforeFirst() C afterLast() D isBeforeFirst() E absolute(int) F relative(int) 12. 接口RowSet实现了接口:() A Statement B ResultSet C update D populate

JDBC操作Oracle数据库(增删改查详细实例教程)

private final String = "oracle.jdbc.driver.OracleDriver"及登录;功能实现。E clipse + struts2+oracle+jdbc eb开发技术框架入门小项目,一般都是从增删改功能实现开始入手,就像学编程语言几乎从“HelloWorld final”一样的经典,本人初入 String = "jdbc:oracle:thin:@192.168.0.99:1521:denver"; private final String DBUSER = "zzw"; private final一、环境搭建 "zzw"; private Connection conn = null; 导入必要的包,我所建工程引入如下包: public DataBaseConnection( { C lasses12.jar commons-fileupload-1.2.2.jar commons-io-2.0.1.jar commons-lang-2.5.jar freemarker- 2.3.16.jar javassist-3.11.0.GA.jar ognl-3.0.1.jar ojdbc14.jar struts-core-2.2.3.jar xwork-core-2.2.3.jar try { 引入的包具体的版本同struts 的版本有关系,我的是sturts2.2.6.(DBDRIVER; this.conn = DriverManager.getConnection 二、DBURL, web.xml, DBPASSWORD; } 我的web.xml内容如下: } xml } ?> // 取得数据库连接web-app public Connection getConnection( { "xmlns=" return xmlns:web="https://www.doczj.com/doc/238124734.html,/xml/ns/javaee/web- app_2_5.xsd" }="https://www.doczj.com/doc/238124734.html,/xml/ns/javaee https://www.doczj.com/doc/238124734.html,/xml/ns/javaee/web-app_2_5.xsd " id="WebApp_ID"version=" close( {"> try{// 我的工程名为webDemo } catch (Exception e { }

韩顺平.2011最新j2ee视频教程.jdbc新闻管理系统开发文档

1.根据需求分析文档,确定我们要完成的功能 ①用户登录 ②查询新闻 ③添加新闻 ④退出系统 2.画出uml图. ①用例图 ②时序图 ③类图 3.根据分析出的功能,我们设计数据库和表 --插入数据 insert into news values(1,'微软向非洲支援二手电脑',to_date('2008-06-09 15:49:00','yyyy-mm-dd hh24:mi:ss'),'微软在最近宣布它正计划向非洲国家提供技术帮助,以加速该地区的数字化进程。据悉,微软已经与纳米比亚政府达成了协议,将在两年内向该国13所学校提供从发达国家淘汰的二手电脑,这些电脑将运行Windows系统,可以登录Google、雅虎等热门网站,不过微软并没有透露出售Windows系统给这些学校的价格。'); insert into news values(2,'韩国失窃手机大量流入中国',to_date('2009-06-09 10:49:44','yyyy-mm-dd hh24:mi:ss'),'据韩国信息部提供的消息称,目前已经发现中国商人在韩国以每部400—500元(人民币)的价格收购被盗或丢失的市价1—2万元(人民币)的手机,然后成批走私到中国,以每部3000元以下的价格出售。'); insert into news values(3,'明基宣布收购西门子手机',to_date('2009-06-07 16:50:33','yyyy-mm-dd hh24:mi:ss'),'明基7日下午正式对外宣布收购德国西门子手机事业,这起并购将使BenQ成为全球第四大手机品牌、大中华区第一大手机科技公司,合并后公司年营收将超过100亿美元。'); insert into news values(4,'Google股价飙升',to_date('2009-06-03 11:30:20','yyyy-mm-dd hh24:mi:ss'),'现今的Google已经成为华尔街的宠儿。上市后的前三个季度里,Google的业绩均超过了分析师的预期。主要竞争对手雅虎和微软都在广告战中大把烧钱,而Google却毫不费力的依靠人们的口口相传继续保持着搜索市场的领先位置。与此同时,Google的股价也一路飙升,目前已较发行价上涨226%,达到227美元。');

jdbc实验

实验四JDBC访问数据库 一、实验目的 1. 掌握使用传统的方法访问数据库; 2. 掌握使用数据源的方法访问数据库。 二、实验原理 数据库应用是Web应用开发的一个重要应用。Web应用程序访问数据库有两种方法:传统的方法和使用JNDI数据源的方法。 传统方法访问数据库的步骤是:①加载数据库驱动程序;②建立连接对象;③创建语句对象;④获得结果集;⑤关闭有关连接对象。 使用数据源访问数据库的步骤是:①配置数据源(局部数据源或全局数据源);②通过JNDI 机制查找命名数据源;③通过数据源对象创建连接对象;④其他与传统方法一致。 三、实验内容与步骤 (一)使用传统方法通过JSP页面访问数据库 【步骤1】创建数据库。假设在MySql中建立了一个名为bookstore的数据库,在其中建立books表,代码如下: CREATE TABLE books ( bookid character(5) PRIMARY KEY, --书号 title text, --书名 author character varying(20), --作者 publisher character varying (40), --出版社 price real --价格 ); 向books表中插入几条记录,代码如下: INSERT INTO books V ALUES ('204','Head First Servlets & JSP', 'Bryan Basham', '中国电力出版社',98.00); INSERT INTO books V ALUES ('201', 'Servlets 与JSP 核心教程', 'Hall Marty','清华大学出版社',45); INSERT INTO books V ALUES ('202', 'Tomcat与Java Web 开发技术祥解', '孙卫琴', '机械工业出版社',45); INSERT INTO books V ALUES ('203', 'JSP 应用开发技术', '柳永坡','人民邮电出版社',52); INSERT INTO books V ALUES ('205', 'J2EE 1.4 编程指南', 'Spielman Sue','电子工业出版社',68); 注意:需要将数据库的JDBC驱动程序安装到应用程序的WEB-INF\lib目录中。 【步骤2】使用下面JSP页面displayBooks.jsp访问books表中的数据。 <%@ page contentType="text/html; charset=gb2312" %> <%@ page import="java.sql.*"%> Database Access Test <% try { Class.forName(" "); String dburl = " ";

jdbc说明与用途

JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。 有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用,将Java语言和JDBC结合起来使程序员只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次Java数据库连接体系结构是用于Java应用程序连接数据库的标准方法。JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。作为API,JDBC为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。JDBC使用已有的SQL标准并支持与其它数据库连接标准,如ODBC 之间的桥接。JDBC实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。 JDBCTM 是一种用于执行SQL 语句的JavaTM API,它由一组用Java 编程语言编写的类和接口组成。JDBC 为工具/数据库开发人员提供了一个标准的API,使他们能够用纯Java API 来编写数据库应用程序。 有了JDBC,向各种关系数据库发送SQL 语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase 数据库专门写一个程序,为访问Oracle 数据库又专门写一个程序,为访问Informix 数据库又写另一个程序,等等。您只需用JDBC API 写一个程序就够了它可向相应数据库发送SQL 语句。而且,使用Java 编程语言编写的应用程序,就无须去忧虑要为不同的平台编写不同的应用程序。将Java 和JDBC 结合起来将使程序员只须写一遍程序就可让它在任何平台上运行。 Java 具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰出语言。所需要的只是Java应用程序与各种不同数据库之间进行对话的方法。而JDBC 正是作为此种用途的机制。 JDBC 扩展了Java 的功能。例如,用Java 和JDBC API 可以发布含有applet的网页,而该applet 使用的信息可能来自远程数据库企业也可以用JDBC 通过Intranet 将所有职员连到一个或多个内部数据库中(即使这些职员所用的计算机有Windows、Macintosh 和UNIX 等各种不同的操作系统)。随着越来越多的程序员开始使用Java 编程语言,对从Java 中便捷地访问数据库的要求也在日益增加。 MIS管理员们都喜欢Java 和JDBC 的结合,因为它使信息传播变得容易和经济。企业可继续使用它们安装好的数据库,并能便捷地存取信息,即使这些信息是储存在不同数据库管理系统上。新程序的开发期很短。安装和版本控制将大为简化。程序员可只编写一遍应用程序或只更新一次,然后将它放到服务器上,随后任何人就都可得到最新版本的应用程序。对于商务上的销售信息服务,Java 和JDBC 可为外部客户提供获取信息更新的更好

相关主题
文本预览
相关文档 最新文档