实验七 JDBC数据库编程基本知识
JDBC知识点总结
JDBC知识点总结JDBC(Java Database Connectivity)是Java语言访问关系型数据库的标准接口。
它提供了一组方法和类,使得Java程序能够和数据库进行连接、查询和更新等操作。
下面是关于JDBC的知识点总结。
1.JDBC的工作机制JDBC通过驱动程序(Driver)将Java程序和数据库连接起来。
驱动程序的主要作用是提供与数据库通信的实现。
JDBC的工作机制可以分为以下几个步骤:- 加载驱动程序:使用Class.forName(方法加载驱动程序类。
- 建立连接:使用DriverManager.getConnection(方法建立与数据库的连接。
- 创建语句对象:使用连接对象的createStatement(方法或prepareStatement(方法创建Statement或PreparedStatement对象。
- 执行SQL语句:使用Statement或PreparedStatement对象的executeQuery(、executeUpdate(等方法执行SQL语句。
- 处理结果:对于查询操作,可以通过ResultSet对象获取结果集中的数据;对于更新操作,可以通过返回的整数值判断操作是否成功。
- 关闭连接:使用Connection对象的close(方法关闭连接。
2.JDBC的核心接口- Connection接口:表示数据库连接对象。
可以通过DriverManager.getConnection(方法获取Connection对象。
- Statement接口:用于执行静态SQL语句,不带参数。
- PreparedStatement接口:用于执行带有参数的SQL语句,可以提高SQL语句的效率和安全性。
- CallableStatement接口:用于执行存储过程。
- ResultSet接口:表示查询结果集。
可以通过Statement或PreparedStatement的executeQuery(方法获取ResultSet对象。
jdbc数据库编程总结
jdbc数据库编程总结JDBC数据库编程总结JDBC(Java Database Connectivity)是一种应用程序接口,用于与数据库进行连接和交互。
通过JDBC,我们可以使用Java语言编写代码来执行各种数据库操作,如查询、插入、更新和删除数据。
在这篇文章中,我们将一步一步回答有关JDBC数据库编程的问题,以帮助读者更好地理解和运用这个技术。
1. 什么是JDBC?JDBC是Java语言用于连接和操作数据库的API(应用程序接口)。
它提供了一组标准接口和类,允许开发人员通过Java代码访问和操作各种数据库系统,如MySQL、Oracle、SQL Server等。
JDBC的工作原理是通过加载数据库驱动程序、建立连接、执行SQL语句、处理结果等步骤来实现与数据库之间的交互。
2. JDBC的核心组件有哪些?JDBC由四个核心组件组成:- DriverManager:负责加载并注册数据库驱动程序,并创建与数据库之间的连接。
- Connection:表示与数据库的连接,可以用于执行SQL语句和管理事务。
- Statement:用于执行SQL语句,包括查询、插入、更新和删除等操作。
- ResultSet:表示从数据库中返回的结果集,可以用于访问查询结果并进行逐行处理。
3. 如何进行JDBC编程?JDBC编程通常包括以下步骤:- 导入JDBC相关的类和接口。
- 加载数据库驱动程序:通过Class.forName()方法加载并注册数据库驱动程序。
- 建立与数据库的连接:使用DriverManager.getConnection()方法创建一个Connection对象。
- 创建Statement对象:通过Connection对象的createStatement()方法创建一个Statement对象。
- 执行SQL语句:使用Statement对象的executeQuery()或executeUpdate()方法执行相应的SQL语句。
JDBC编程实验
JDBC编程实验JDBC编程先了解基础知识以及原理JDBC编程步骤:JDBC常⽤编程语句:数据库命令(1) 查看当前数据库服务器中所有的数据库show databases;(2) 使⽤数据库use 数据库名称;(3) 查看当前数据库中所有的数据表show tables;(4) 查看数据表中有多少列(表头)desc 表的名称;-----------------------脚本中常⽤的------------------------(5) 删除数据库drop database if exists 数据库名称;(6) 创建数据库create database 数据库名称;(7) 创建数据表create table 表名称 (eid int,name varchar(8),….列名称);(8) 插⼊数据insert into 表名称 values(列数据1, 列数据2…); (9) 查询数据select * from 表名称;1.先通过命令窗⼝进⼊mysql然后查看数据库⾥⾯有什么以上是我的数据有两个database,其中test中为空,现在在eclipse中创建table zhangjin 表中有两列id,name;以下是代码(要导⼊jdbc驱动jar包):package test;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;public class jabc {/*** 1.注册驱动* 2.获取数据库连接对象* 3.创建sql执⾏对象* 4.执⾏sql语句* 5.关闭资源* @throws Exception*/public static void main(String[] args) throws Exception {//1.加载数据库驱动Class.forName("com.mysql.jdbc.Driver");//2.创建并获取数据库连接Connection conn =DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","123456"); //3.创建jdbc statement对象Statement stat = conn.createStatement();//4.设置sql语句//5.创建表String sql1 = "create table zhangjin(id int,name varchar(10))";stat.execute(sql1);System.out.println("创建成功");//查询数据String sql2="select * from zhangjin";ResultSet rs=stat.executeQuery(sql2);while(rs.next()){int id =rs.getInt("id");String name =rs.getString("name");System.out.println(id+":"+name);}//5.释放资源stat.close();conn.close();}}之后再进⼊dos查看结果,表⽰成功。
jdbc数据库连接的基本参数
JDBC数据库连接的基本参数1. 什么是JDBC?Java Database Connectivity(JDBC)是一种用于在Java应用程序和数据库之间建立连接的API。
它允许开发人员使用标准的SQL语句来访问和操作数据库。
JDBC提供了一种通用的方式来连接各种类型的数据库,包括关系型数据库(如MySQL、Oracle、SQL Server等)和非关系型数据库(如MongoDB、Redis等)。
2. JDBC连接的基本参数在使用JDBC连接数据库时,需要指定一些基本参数。
以下是常用的JDBC连接参数:•URL:表示要连接的数据库的地址。
不同类型的数据库有不同格式的URL,例如MySQL的URL格式为jdbc:mysql://hostname:port/database,其中hostname为主机名,port为端口号,database为要连接的数据库名称。
•Driver Class:表示要使用的驱动程序类名。
每个数据库供应商都提供了自己特定类型数据库驱动程序类。
•Username:表示要登录到数据库时使用的用户名。
•Password:表示要登录到数据库时使用的密码。
3. JDBC连接示例下面是一个使用JDBC连接MySQL数据库的示例:import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class JdbcExample {public static void main(String[] args) {String url = "jdbc:mysql://localhost:3306/mydatabase";String username = "root";String password = "password";try {// 加载MySQL驱动程序Class.forName("com.mysql.jdbc.Driver");// 建立数据库连接Connection connection = DriverManager.getConnection(url, username,password);// 执行SQL查询或更新操作// 关闭数据库连接connection.close();} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}}}在上面的示例中,我们首先加载MySQL驱动程序,然后使用DriverManager.getConnection()方法来建立与数据库的连接。
jdbc知识点
jdbc知识点JDBC(Java Database Connectivity)是Java语言与关系数据库进行交互的一种标准接口。
它提供了一组用于执行SQL语句、获取查询结果以及管理数据库连接的方法。
通过JDBC,开发者可以方便地连接数据库、执行数据库操作,并且对不同类型的数据库实现进行统一。
JDBC的核心概念是驱动程序(driver)和连接(connection)。
驱动程序是用于与特定数据库类型进行交互的软件组件,而连接则是与数据库之间建立的会话。
通过驱动程序,Java应用程序可以使用JDBC API连接到各种数据库,并执行各种数据库操作。
在使用JDBC进行数据库操作时,首先需要加载合适的驱动程序。
驱动程序的加载通常通过调用`Class.forName()`方法来实现。
加载驱动程序后,可以通过`DriverManager.getConnection()`方法创建一个数据库连接。
连接成功后,就可以使用`Connection`对象执行SQL语句。
执行SQL语句的方式有两种:一种是使用`Statement`对象,另一种是使用`PreparedStatement`对象。
`Statement`对象用于执行静态SQL语句,而`PreparedStatement`对象则用于执行动态SQL语句。
通过这两种对象可以执行查询、插入、更新以及删除等操作。
执行查询操作时,可以使用`ResultSet`对象获取查询结果。
`ResultSet`对象提供了一系列方法用于遍历查询结果集,并获取每一条记录的数据。
通过`ResultSet`对象,可以获取各个字段的值,并进行相应的处理。
在数据库操作完成后,需要关闭数据库连接。
关闭连接可以通过调用`Connection`对象的`close()`方法来实现。
关闭连接后,就可以释放占用的资源,并且断开与数据库的连接。
JDBC还提供了一些其他的功能,例如事务管理、批量更新等。
事务管理是指对一系列数据库操作进行统一管理,保证这些操作要么全部成功执行,要么全部回滚。
jdbcJava 数据库接口 JDBC 入门基础
第一讲第一讲慨述1.1 什么是 JDBCTM?JDBCTM 是一种用于执行 SQL 语句的 JavaTM API(有意思的是,JDBC 本身是个商标名而不是一个缩写字;然而,JDBC常被认为是代表“Java 数据库连接(Java Database Connectivity)”)。
它由一组用 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 的结合,因为它使信息传播变得容易和经济。
简述jdbc编程的基本步骤
简述jdbc编程的基本步骤
JDBC(Java Database Connectivity)是一种用于连接和操作数据库的 API,它允许 Java 程序与各种关系型数据库进行交互。
以下是使用 JDBC 编程的基本步骤:
1. 导入 JDBC 驱动库:首先,需要根据你使用的数据库类型,下载并添加相应的 JDBC 驱动库到项目的类路径中。
2. 注册驱动程序:在使用 JDBC 之前,需要注册驱动程序。
这可以通过在代码中加载和注册驱动类来完成。
3. 创建数据库连接:使用适当的数据库连接 URL、用户名和密码,创建到数据库的连接。
4. 创建 Statement 对象:通过连接对象获取 Statement 对象,用于执行 SQL 语句。
5. 执行 SQL 语句:使用 Statement 对象执行各种 SQL 操作,如查询、插入、更新和删除数据。
6. 处理结果:根据 SQL 语句的类型,获取和处理执行结果。
对于查询操作,可以使用ResultSet 对象逐行处理返回的数据。
7. 关闭资源:在完成数据库操作后,务必关闭连接、Statement 和 ResultSet 对象,释放相关资源。
这是使用 JDBC 编程的基本步骤概述。
实际的 JDBC 应用可能涉及更复杂的数据库操作、异常处理和性能优化等方面。
此外,还可以使用封装和管理数据库连接的池化技术来提高性能和资源利用效率。
第1关:jdbc基础知识
JDBC基础知识JDBC(Java Database Connectivity)是Java语言访问数据库的标准API。
它提供了一组用于在Java应用程序和数据库之间进行连接、执行SQL语句和处理结果的类和接口。
以下是一些JDBC的基础知识:1. 数据库驱动程序(Database Driver):JDBC需要数据库供应商提供的数据库驱动程序来连接到具体的数据库。
驱动程序实现了JDBC接口,使得Java应用程序可以与数据库进行通信。
2. 连接数据库:使用JDBC连接数据库需要提供数据库的连接URL、用户名和密码。
通过调用`DriverManager.getConnection()`方法,可以获得与数据库的连接。
3. 执行SQL语句:JDBC提供了`Statement`和`PreparedStatement`两个接口来执行SQL语句。
`Statement`用于执行静态的SQL语句,而`PreparedStatement`用于执行动态的SQL语句,可以通过参数化的方式传递参数。
4. 处理查询结果:执行SQL查询语句后,可以使用`ResultSet`对象来处理查询结果。
`ResultSet`提供了访问查询结果集的方法,可以按行遍历结果、获取特定列的值等。
5. 事务管理:JDBC支持事务处理,可以通过设置连接的自动提交模式或手动控制事务提交和回滚。
使用`Connection`对象的`commit()`和`rollback()`方法可以控制事务的提交和回滚。
6. 资源释放:在使用完数据库连接、语句和结果集等资源后,需要手动关闭它们,以释放资源。
通过调用相应对象的`close()`方法来关闭连接、语句和结果集。
7. 异常处理:JDBC操作可能会出现异常情况,如数据库连接失败、SQL语句错误等。
应该使用异常处理机制(try-catch语句块)来捕获和处理异常,以确保程序的稳定性和可靠性。
这些是JDBC的基础知识,使用JDBC可以实现Java应用程序与数据库的交互。
第五章JDBC数据库编程基础知识
第五章JDBC数据库编程基础知识数据库开发在当前的Web开发与应用中占有着十分重要的地位,信息科技进步的日新月异,实际应用基本都是对数据的保存,加工和处理,所以应用软件的开发离不开数据库知识。
鉴于数据库操作的重要性,本章就此技术进行详细的介绍,以方便大家学习使用。
Java提供的JDBC(Java Database Connectivity)使得我们在数据库编程中如鱼得水,实现操作平台独立以及供应商独立的目标。
本章中,我们会首先搭建起JSP开发数据库环境,然后对SQL数据库操作语言进行简单介绍,再通过具体的示例,让读者整体了解和掌握此项技术。
5.1 JDBCJDBC是Java数据库编程的总称,是JDK重要组成部分,指java.sql包中提供的所有支持数据库编程的API类。
JDBC同时提供对第三方数据库提供商在编写驱动软件时遵循的协议和规范。
JDBC通过drivers与数据库通讯和交流,驱动软件翻译Java程序中对数据库访问的代码,使之成为数据库语言,同时,当数据库将数据或信息传给Java程序,驱动软件又将其翻译为Java语言的代码和数据。
当前主流的数据库提供商有很多,如IBM的DB2,微软的SQL Server,MySQL,甲骨文的Oracle等。
当要添加数据到数据库时,不同数据库中添加操作使用的程序可能都不尽相同,是否就意味着必须针对不同的数据库编写相应的程序呢?实际上,根本无需如此麻烦,Java提供的驱动软件称为JDBC/ODBC(Open Database Connectivity,开放数据库连接协议)桥,通过这个ODBC作为我们存取数据库的接口,可以轻易的存取不同数据库。
ODBC最初是MS公司提供的数据库编程协议模式,现成为JDK中java.sql包的数据库驱动软件。
JDBC包含了“应用程序”(Application)、“驱动管理器”(Driver Manager)、“驱动程序”(Driver)、“数据来源”(Data Sources)4个要素,关系如下图5-1所示。
JDBC数据库连接的使用教程
JDBC数据库连接的使用教程JDBC(Java数据库连接)是Java应用程序与数据库之间进行通信的一种标准方式。
JDBC提供了一组API,使得开发人员可以使用Java代码来访问数据库。
本文将介绍JDBC的基本使用方法,包括连接数据库、执行SQL语句以及处理结果集等。
1. 连接数据库在使用JDBC连接数据库之前,需要先下载并安装相应的数据库驱动程序。
数据库驱动程序是一个Java库,其提供了与特定数据库通信所需的功能。
首先,需要在Java代码中导入数据库驱动程序:```import java.sql.*;```然后,使用以下代码连接数据库:```String url = "jdbc:mysql://localhost:3306/mydatabase";String user = "username";String password = "password";Connection conn = null;try {conn = DriverManager.getConnection(url, user, password);// 连接成功} catch (SQLException e) {// 连接失败}```其中,url是数据库的连接地址,它包括数据库协议、主机名和端口号以及数据库名称。
user和password是连接数据库的用户名和密码。
Connection对象表示与数据库之间的连接,它可以用于执行SQL语句并处理结果。
2. 执行SQL语句一旦连接成功,就可以使用Connection对象执行SQL语句。
以下是一个简单的示例,它执行了一个SELECT语句并打印出结果集:```Statement stmt = null;ResultSet rs = null;try {stmt = conn.createStatement();rs = stmt.executeQuery("SELECT * FROM mytable");while (rs.next()) {int id = rs.getInt("id");String name = rs.getString("name");System.out.println("id: " + id + ", name: " + name);}} catch (SQLException e) {// 处理异常} finally {// 关闭资源try { rs.close(); } catch (Exception e) { /* ignored */ }try { stmt.close(); } catch (Exception e) { /* ignored */ }}```首先,使用Connection对象创建一个Statement对象,它可以用于执行SQL语句。
jdbc数据库连接的基本参数
jdbc数据库连接的基本参数JDBC(Java Database Connectivity)是一种用于Java编程语言的API,用于管理与关系型数据库之间的连接和操作。
通过JDBC,开发者可以直接与数据库进行通信,执行SQL语句和存储过程,以及处理查询结果。
在使用JDBC连接数据库时,需要关注一些基本的参数,包括:URL、用户名、密码、驱动程序名称。
1. URL(URL)URL是一个字符串,用于指定数据库的位置和其他连接相关的属性。
URL的具体格式可以根据不同的数据库类型而有所区别。
例如,对于MySQL数据库,URL的格式如下:jdbc:mysql://hostname:port/database_name其中,"hostname"是数据库服务器的主机名或IP地址,"port"是数据库服务器监听的端口号,"database_name"是要连接的数据库的名称。
2.用户名(User)用户名是用于在数据库服务器上进行身份验证的凭证。
在使用JDBC连接数据库时,必须提供有效的用户名才能成功连接。
3.密码(Password)密码是与用户名关联的机密信息,用于进行身份验证。
在连接数据库时,需要提供与用户名匹配的密码。
4.驱动程序(Driver)驱动程序是用于与特定数据库进行通信的软件组件。
不同类型的数据库通常需要不同的驱动程序。
例如,对于MySQL数据库,可以使用"com.mysql.jdbc.Driver"作为驱动程序。
在使用JDBC连接数据库时,还可以设置其他可选的参数,以提供更多的数据库连接控制和配置。
5.自动提交(AutoCommit)自动提交参数用于指定是否自动将事务中的更改提交到数据库。
默认情况下,自动提交是开启的。
可以通过调用"setAutoCommit(false)"方法来禁用自动提交,然后在需要的时候手动调用"commit()"方法提交事务。
jdbc知识点总结
jdbc知识点总结一、JDBC概述JDBC(JavaDatabaseConnectivity)是Java语言中用于执行SQL 语句的API,它允许Java程序与各种数据库进行交互。
通过JDBC,Java程序可以建立连接、执行SQL语句、处理结果集等。
二、JDBC核心技术1.加载驱动器:使用Class.forName()方法加载数据库驱动器。
2.建立连接:使用DriverManager类中的getConnection()方法建立与数据库的连接。
3.创建语句:使用Statement或PreparedStatement对象来创建SQL语句。
4.执行语句:使用Statement或PreparedStatement对象的execute()方法来执行SQL语句。
5.处理结果集:使用Statement或PreparedStatement对象的getResultSet()方法获取结果集,并进行处理。
6.关闭连接、语句和驱动器:在程序结束时,需要关闭连接、语句和驱动器,以释放资源。
三、JDBC常用API1.Connection:用于建立与数据库的连接。
2.Statement:用于执行普通的SQL语句。
3.PreparedStatement:用于执行预编译的SQL语句,以提高性能。
4.ResultSet:用于获取查询结果集。
5.SQLException:处理数据库异常。
四、JDBC常用数据库驱动程序1.MySQLJDBCDriver:用于连接MySQL数据库。
2.OracleJDBCDriver:用于连接Oracle数据库。
3.SQLServerJDBCDriver:用于连接SQLServer数据库。
4.PostgreSQLJDBCDriver:用于连接PostgreSQL数据库。
五、JDBC常见问题及解决方案1.无法加载驱动器:检查驱动程序名是否正确,以及驱动程序是否已正确安装和导出。
2.连接失败:检查数据库URL、用户名和密码是否正确,以及网络连接是否正常。
jdbc操作数据库的基本步骤与过程
jdbc操作数据库的基本步骤与过程JDBC(Java Database Connectivity)是Java语言操作数据库的一种标准接口,它提供了一种统一的访问各种关系数据库的途径。
通过JDBC,开发者可以使用Java语言来操纵数据库,执行SQL语句并处理查询结果。
下面我们将会讨论JDBC操作数据库的基本步骤与过程。
JDBC操作数据库的基本步骤分为:加载驱动、建立连接、创建Statement或PreparedStatement对象、执行SQL语句、处理结果集和释放资源。
1. 加载驱动加载驱动是JDBC操作数据库的第一步。
在JDBC中,每个数据库厂商都提供了一个JDBC驱动程序用于连接和操作其数据库。
在使用JDBC之前,我们需要通过Class.forName()方法加载数据库的驱动程序。
例如,如果要连接MySQL数据库,就需要加载com.mysql.jdbc.Driver驱动:javaClass.forName("com.mysql.jdbc.Driver");2. 建立连接当驱动加载成功后,接下来就是建立与数据库的连接。
在建立连接时,我们需要提供数据库的URL、用户名和密码。
例如,连接MySQL数据库的代码如下:javaString url = "jdbc:mysql:localhost:3306/mydb";String user = "username";String password = "password";Connection conn = DriverManager.getConnection(url, user, password);3. 创建Statement或PreparedStatement对象在成功建立连接后,就可以创建用于执行SQL语句的Statement或PreparedStatement对象了。
jdbc数据库连接的基本参数
JDBC数据库连接的基本参数包括:驱动程序名称、URL、用户名和密码。
这些参数在连接数据库时起着至关重要的作用,下面将分别进行介绍。
一、驱动程序名称驱动程序名称是连接数据库时必须要指定的参数,它是一个类的全限定名,用于告诉JDBC应用程序应该使用哪个数据库厂商提供的驱动程序来连接数据库。
在Java程序中,我们可以通过Class.forName()方法来动态加载驱动程序,示例如下:```javaClass.forName(.mysql.cj.jdbc.Driver");```其中,.mysql.cj.jdbc.Driver"就是MySQL数据库提供的驱动程序名称。
不同的数据库厂商提供的驱动程序名称是不同的,需要根据具体的数据库来进行指定。
二、URLURL是用来描述数据库的位置、名称以及其他一些参数的字符串,它是连接数据库时必须要指定的参数。
URL的格式也是根据不同的数据库厂商提供的驱动程序而有所不同,下面以MySQL为例进行介绍:```javaString url ="jdbc:mysql://localhost:3306/test?useSSL=falseserverTimezone= UTC";```其中,"jdbc:mysql://"是固定的前缀,表示使用MySQL数据库;"localhost:3306"表示数据库所在的主机名和端口号;"test"表示数据库的名称;"useSSL=falseserverTimezone=UTC"表示一些额外的参数,用来配置数据库连接的一些属性。
三、用户名和密码用户名和密码是连接数据库时必须要指定的参数,用来进行身份认证和权限控制。
在连接数据库时,通常会使用数据库的用户名和密码来进行验证,示例如下:```javaString user = "root";String password = "0";```其中,"root"是数据库的用户名,"0"是数据库的密码。
jdbc基础知识总结
jdbc基础知识总结JDBC(Java Database Connectivity)是Java语言中用于连接和操作数据库的API。
它提供了一种标准的方式来访问各种关系型数据库,如MySQL、Oracle、SQL Server等。
在本文中,我们将总结JDBC 的基础知识。
1. JDBC驱动程序JDBC驱动程序是用于连接Java应用程序和数据库的软件组件。
它们提供了一种标准的接口,使Java应用程序能够与各种数据库进行通信。
JDBC驱动程序通常分为四种类型:JDBC-ODBC桥接驱动程序、本地API驱动程序、网络协议驱动程序和本地协议驱动程序。
2. JDBC APIJDBC API是Java语言中用于连接和操作数据库的标准API。
它包含了一组接口和类,用于执行SQL语句、处理结果集、管理事务等。
JDBC API的核心接口是Connection、Statement和ResultSet。
3. 连接数据库连接数据库是使用JDBC的第一步。
要连接数据库,需要使用DriverManager类的getConnection()方法。
该方法需要传递数据库的URL、用户名和密码作为参数。
例如,连接MySQL数据库的代码如下:```String url = "jdbc:mysql://localhost:3306/mydatabase";String user = "root";String password = "mypassword";Connection conn = DriverManager.getConnection(url, user, password);```4. 执行SQL语句执行SQL语句是使用JDBC的主要功能之一。
要执行SQL语句,需要创建一个Statement对象,并使用它的execute()方法。
例如,执行SELECT语句的代码如下:```Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery("SELECT * FROM mytable");while (rs.next()) {// 处理结果集}```5. 处理结果集处理结果集是使用JDBC的另一个重要功能。
jdbc数据库连接原理
jdbc数据库连接原理JDBC(Java Database Connectivity)是Java语言连接数据库的一种技术。
它提供了一组API,允许Java应用程序与各种关系型数据库进行交互。
JDBC的原理是通过驱动程序与数据库建立连接并执行SQL语句。
下面是JDBC连接数据库的基本过程:1. 加载数据库驱动程序:在使用JDBC连接数据库之前,需要先加载相应的数据库驱动程序。
每个数据库厂商都会提供相应的驱动程序,我们需要将驱动程序的jar文件导入到Java项目中,并通过`Class.forName()`方法加载该驱动程序。
2. 建立数据库连接:通过调用`DriverManager.getConnection()`方法,传入数据库连接的URL、用户名和密码等参数,与数据库建立连接。
URL由数据库厂商定义,可以包含数据库主机地址、端口号、数据库名等信息。
3. 创建Statement对象:通过调用`Connection.createStatement()`方法,创建一个Statement对象。
Statement对象用于执行SQL语句,并返回结果集(如果有的话)。
4. 执行SQL语句:通过调用Statement对象的`executeUpdate()`方法执行更新语句(如INSERT、UPDATE、DELETE),或调用`executeQuery()`方法执行查询语句(如SELECT)。
如果SQL语句有参数,可以使用`PreparedStatement`代替`Statement`对象,通过设置参数的方式进行动态SQL。
5. 处理结果集:对于查询语句,`executeQuery()`方法会返回一个`ResultSet`对象,包含查询结果。
可以通过`ResultSet`对象的方法获取查询结果的记录,并进行相应的操作。
6. 关闭连接:在使用完数据库连接后,需要调用相关对象的`close()`方法,关闭数据库连接、Statement对象或ResultSet对象,以释放资源。
(完整word版)JDBC实验报告详细
实验二JDBC编程一、目的通过Java数据库访问程序的编写、调试,使学生掌握JDBC编程的基本方法,熟悉常用的JDBC API,促进学生对概念的理解,培养动手能力。
二、基本要求学生需要按时达到指定实验室上机。
调试教学中使用的程序示例,并加以修改,增加程序的功能;实现数据库访问的优化。
完成实验后,需要按时提交实验报告。
三、实验内容(1)复习数据库SQL语句的编写。
(2)编写Java数据库(使用ODBC-JDBC驱动)公共模块。
(3)建立数据库应用模型,对数据库进行操作。
(4)调试程序,实现数据库的访问。
3.1数据源的确定可能是我不知道怎么配置,我的电脑是Windows7系统,和学校WindowsXP 系统的电脑配置方法不太一样,需要在C:\Windows\System32路径中,找到odbcad32.exe才能顺利修改数据源。
数据源设置好了以后就可以编辑代码并正常运行了。
下面以一张截图展示我的数据库3.2数据库信息查询.一3.2.1代码import java.sql.*; /*此处提供了SQL包,就可以放心使用SQL语句了*/ public class Students{public static void main(String args[]){ //look out this "S" of "string" !String driver="sun.jdbc.odbc.JdbcOdbcDriver";/*这里定义了driver做驱动器使用,为了美观事先定义,其实放在Class.forName 的括号里也是完全正确的*/String url="jdbc:odbc:students";/*此处指定了数据库,要注意两者名字一定要一样,否则找不到数据源*/ String query="select name,num,course,score from students"; //focus on the SQL language :select...from... ! /*需要执行的SQL语句*/Connection con=null; /*链接的定义*/Statement s=null; /*Statement对象的定义,两者赋值null 是为了在try块出现异常的时候不会被判断为逻辑错误,认为变量没有赋值*/try{ /*第一个try块实现了驱动器的启动*/Class.forName(driver); //look out this "class" should write in Huge one!/*注意此处的Class需要大写!*/}catch(ClassNotFoundException e){System.err.println("ClassNotFoundException:"+e.getMessage());}try{ /*第二个try块实现查询功能*/con=DriverManager.getConnection(url);/*刚刚定义的url在这里用上,此时程序才真正与数据库相连*/s=con.createStatement(); /*新建一个Statement*/ResultSet r=s.executeQuery(query); /*query在这里用上,执行SQL语句,也就是按照我们的要求实现我们想完成的功能*/System.out.println("name:" + " num:" + " course:" + " score:");while(r.next()){ /*逐行查询,只要有值就执行while里的语句*//*注意以下的每一项name,num等都要与数据库中的题目想吻合*/ String r1=r.getString("name");String r2=r.getString("num");String r3=r.getString("course");String r4=r.getString("score");/*注意这些名字一定要与数据库中的名字吻合!当然也可以用数字代替,但是我的数据库第一列是ID,所以要注意name是2,num是3,以此类推*/System.out.println(r1+ r2+ r3+ r4);}}catch(SQLException e){e.printStackTrace();}finally{try{s.close(); /*关闭Statement对象*/con.close(); /*关闭连接*/}catch(SQLException e){e.printStackTrace();}} System.out.println("i am lagent");/*这条语句是一开始用于查找错误使用的*/ }}3.2.2运行截图13.3数据库信息查询.二3.3.1代码import java.sql.*;import java.util.*;public class Statement1{ /* pay attention the name of class must not be the same with the public style ! The first time i named it "Statement" so that it can't run successfully *//*英文是编程当时留下的痕迹,当时讲类名写作Statement,与关键字相同,因此出错不能正常运行,我的总结是在拿不准的情况加一个数字就可以避免这样的尴尬情况*/public static void main(String arg[]){String driver="sun.jdbc.odbc.JdbcOdbcDriver";String url="jdbc:odbc:Students";String query="select * from students where score > 90"; /*整个程序与第一次编写的没有太大变动和突破,主要是对SQL功能的了解和语句利用的熟练,当时的想法是多写多体会,没考虑创新,在此也就不对语句做重复分析了*/ Connection con=null;Statement s=null;try{Class.forName(driver);}catch(ClassNotFoundException e){System.err.println("ClassNotFoundException:"+e.getMessage());}try{con=DriverManager.getConnection(url);s=con.createStatement();ResultSet r=s.executeQuery(query);System.out.println("name:"+" num:"+" course:"+" score");while(r.next()){String r1=r.getString("name");String r2=r.getString("num");String r3=r.getString("course");String r4=r.getString("score");System.out.println(r1+r2+r3+r4);}}catch(SQLException e){e.printStackTrace();}finally{try{s.close();con.close();}catch(SQLException e){e.printStackTrace();}}}}3.3.2运行截图23.4数据库信息查询.三3.4.1代码import java.sql.*;import java.util.*;import java.io.*;public class PreparedStatement1{public static void main(String arg[]){String driver="sun.jdbc.odbc.JdbcOdbcDriver";String url="jdbc:odbc:Students";String query="select * from students where score > ?";/*要实现按键盘输入的参数来选择查询数据库中的数据,因此需要用“?”*/ Connection con=null;PreparedStatement ps=null;ResultSet r=null;try{Class.forName(driver);}catch(ClassNotFoundException e){System.err.println("ClassNotFoundException:"+e.getMessage());}try{System.out.println("您想要查询分数的下限是:");con=DriverManager.getConnection(url);BufferedReader br=new BufferedReader(new InputStreamReader(System.in));/*带有缓冲区,可以实现从键盘的输入,从字符流中对文本*/try{int ms=Integer.parseInt(br.readLine().trim());/*将键盘输入的参数赋值给ms*///this told me to pay a try and catch , so i put them in a try kuaips=con.prepareStatement(query);/*注意在这里就实现预编译了,这里要注意prepare:小些打头,不是prepared*/ ps.setInt(1,ms); /*1是付给第一个“?”,这里就只有1个*/r=ps.executeQuery();/*因为已经预编译,这里不用在写query*/ }catch(Exception e){System.out.println(e);}System.out.println("name:"+" num:"+" course:"+" score");while(r.next()){String r1=r.getString("name");String r2=r.getString("num");String r3=r.getString("course");String r4=r.getString("score");System.out.println(r1+r2+r3+r4);}}catch(SQLException e){e.printStackTrace();}finally{try{ps.close();con.close();}catch(SQLException e){e.printStackTrace();}}}}3.4.2运行截图31.程序开始运行的程序界面:2.输入参数后的程序界面:3.5数据库信息的增添、删除、修改3.5.1代码import java.sql.*;public class ALL{Connection con=null;Statement s=null;PreparedStatement ps=null;String driver="sun.jdbc.odbc.JdbcOdbcDriver";String url="jdbc:odbc:students";String query="select name,num,course,score from students";public void init(){ /*用init()将定义的对象和变量都初始化*/ try{Class.forName(driver);}catch(ClassNotFoundException e){System.err.println("ClassNotFoundException:"+e.getMessage());}try{con=DriverManager.getConnection(url);s=con.createStatement();}catch(SQLException e){e.printStackTrace();}}public void output(){ /*先输出数据库的数据*/ try{ResultSet r=s.executeQuery(query);System.out.println("name:" + " num:" + " course:" + " score:");while(r.next()){String r1=r.getString("name");String r2=r.getString("num");String r3=r.getString("course");String r4=r.getString("score");System.out.println(r1+ r2+ r3+ r4);}}catch(SQLException e){e.printStackTrace();}}public void add(){try{System.out.println("增加语句之后:");s.executeUpdate("INSERT INTO students(name,num,course,score) V ALUES('三毛','20115407','JA V A高级应用',59)");/*执行更新方法,注意V ALUES后所赋的值对V ALUES前的数据库题目要一一对应,而且在所赋的值一定是用单引号包括*/}catch(Exception e){e.printStackTrace();}}public void change(){try{System.out.println("改变分数之后");ps=con.prepareStatement("UPDATE students SET score=0 WHERE name='三毛'");/*将name为三毛的一栏数据中的score改为0*/ps.executeUpdate();}catch(Exception e){e.printStackTrace();}}public void destroy(){try{s.close();con.close();ps.close();}catch(SQLException e){ e.printStackTrace();}}public static void main(String arg[]){ALL a=new ALL();try{a.init();a.output();a.add();a.output();a.change();a.output(); /*把需要实现的功能分开放在方法中,再在主函数中调用,逻辑清晰而且十分简洁漂亮*/}catch(Exception e){e.printStackTrace();}finally{a.destroy();}}}3.5.2运行截图4四、实验方法与实验步骤(1)根据课堂所学知识,写出JDBC编程的步骤,熟悉JDBC编程所用的类及接口,如Connection、Statement、ResultSet等等;(2)创建程序所要访问的数据库,打开控制面板,建立ODBC数据源,记录给数据库所起的数据源名称。
jdbc操作数据库的基本步骤与过程
jdbc操作数据库的基本步骤与过程JDBC是Java数据库连接的缩写,它是Java语言的一种用于执行SQL 语句的API。
JDBC提供了一种独立于数据库的方式来访问和操作数据库,使得开发者可以使用统一的编程接口来连接不同类型的数据库。
JDBC操作数据库的基本步骤如下:1.加载驱动程序:首先需要加载适当的JDBC驱动程序。
驱动程序是一个用于与目标数据库进行通信的库文件。
不同的数据库有不同的JDBC 驱动程序,开发者需要根据目标数据库选择合适的驱动程序。
2. 建立数据库连接:在加载驱动程序后,使用`DriverManager.getConnection(`方法建立与数据库的连接。
该方法需要提供数据库的URL、用户名和密码等信息。
3. 创建Statement对象:在建立数据库连接后,需要创建一个Statement对象,该对象用于执行SQL语句。
Statement接口提供了各种执行SQL语句的方法,如`executeQuery(`用于执行查询语句,`executeUpdate(`用于执行更新语句等。
4. 执行SQL语句:通过Statement对象执行SQL语句。
开发者可以使用SQL语句来进行数据库的查询、更新、插入和删除等操作。
执行查询语句后,可以通过ResultSet对象获取查询结果。
5. 处理查询结果:当执行的SQL语句是查询语句时,可以通过ResultSet对象获取查询结果。
ResultSet对象提供了一系列的方法来获取查询结果的各个字段的值。
6.关闭数据库连接:完成数据库操作后,需要关闭数据库连接。
关闭连接可以释放资源并释放与数据库的连接,以免资源浪费。
JDBC操作数据库的过程可以描述如下:1. 导入JDBC相关的包:在Java代码文件中,首先需要导入JDBC相关的包。
这样才能使用JDBC提供的类和方法。
2. 加载驱动程序:使用`Class.forName(`方法加载JDBC驱动程序。
该方法需要提供驱动程序的类名。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
§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());}(1) 、表语句示例:(2)、数据库访问层:(3)、用户界面(UI层)调用§2.8.4实践编程2)编写界面使用JTable输出学生表中的内容。
package Ex7_1;import java.sql.*;public class Student1_Dao {public static void main(String[] args){try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectionconn=DriverManager.getConnection("jdbc:odbc:mydb");Statement stmt=conn.createStatement();ResultSet rs=stmt.executeQuery("SELECT * FROM student1");while(rs.next()){String sno=rs.getString(1);String sname=rs.getString(2);String sbrith=rs.getString(3);System.out.println(sno+" "+sname+" "+sbrith);}}catch(Exception e){e.printStackTrace();}}}package Ex7_1;import java.sql.*;public class Student1_Dao {public String[][] queryStudents(){String[][] rows=null;try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection conn=DriverManager.getConnection("jdbc:odbc:mydb");Statement stmt=conn.createStatement();ResultSet rs=stmt.executeQuery("SELECT count(*) FROM student1");rs.next();int c=rs.getInt(1);rows=new String[c][3];c=0;rs=stmt.executeQuery("SELECT * FROM student1");while(rs.next()){rows[c][0]=rs.getString(1);rows[c][1]=rs.getString(2);rows[c][2]=rs.getString(3);c++;}conn.close();}catch(Exception e){e.printStackTrace();}return rows;}}package Ex7_1;import javax.swing.*;import java.awt.*;import java.awt.event.*;import javax.swing.table.DefaultTableModel;public class Student1_Frm extends JFrame{public JTable table=null;public String[] cols={"sno","sname","sbrith"};Student1_Dao Student1_Dao=new Student1_Dao();public Student1_Frm(){JPanel jp = (JPanel) this.getContentPane();String[][] rows = Student1_Dao.queryStudents();JTable table=new JTable(rows,cols);JScrollPane jsp_table = new JScrollPane(table);jp.add(jsp_table);table.setModel(new DefaultTableModel(rows, cols));this.setSize(600, 400);this.setVisible(true);}public static void main(String[] args) {new Student1_Frm();}}3、在Access中有表结构如下:CREATE TABLE tblAdmin (adName varchar(50) ,--用户名adPwd varchar(50)) ;实现一个图书管理系统登录界面按确定键,根据用户输入的数据到数据库中验证用户名和密码是否正确,正确则弹出主界面如下,错误则弹出消息框。
package Ex7_2;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Login_Frm extends JFrame implements ActionListener{ JLabel lbl_name =new JLabel("用户名");JLabel lbl_pwd =new JLabel("密码");JTextField txt_name=new JTextField();JPasswordField txt_pwd=new JPasswordField();JButton btn_OK=new JButton("登陆");JButton btn_Cancel=new JButton("取消");Admin_Dao Admin_Dao=new Admin_Dao();public Login_Frm(){JPanel jp=(JPanel)this.getContentPane();jp.setLayout(new GridLayout(3,2,10,5));jp.add(lbl_name);jp.add(txt_name);jp.add(lbl_pwd);jp.add(txt_pwd);jp.add(btn_OK);jp.add(btn_Cancel);this.setTitle("登陆");this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);btn_OK.addActionListener(this);this.setSize(400,200);this.setVisible(true);}public void actionPerformed(ActionEvent e){String uname=txt_name.getText();String upwd=txt_pwd.getText();if(uname.equals("")||upwd.equals(""))JOptionPane.showMessageDialog(this, "用户名或密码未输入!");else if(Admin_Dao.queryAdmin(uname,upwd)){new MainFrm();this.setVisible(false);}else JOptionPane.showMessageDialog(this, "用户名或密码输入错误!");}public static void main(String[] args) {new Login_Frm();}}package Ex7_2;import java.sql.*;public class Admin_Dao {public boolean queryAdmin(String uname,String upwd){boolean t=false;try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection conn=DriverManager.getConnection("jdbc:odbc:mydb");Statement stmt=conn.createStatement();ResultSet rs=stmt.executeQuery("SELECT count(*) FROM tblAdmin");rs.next();rs=stmt.executeQuery("SELECT * FROM tblAdmin");while(rs.next()){if(uname.equals(rs.getString(1))||upwd.equals(rs.getString(2)))t=true;}conn.close();}catch(Exception e){e.printStackTrace();}return t;}}package Ex7_2;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class MainFrm extends JFrame {private void initMenu() {JMenuBar bar = new JMenuBar();JMenu m1 = new JMenu("学生管理");JMenu m2 = new JMenu("课程管理");JMenuItem m11 = new JMenuItem("学生信息管理");JMenuItem m12 = new JMenuItem("增加学生");JMenuItem m13 = new JMenuItem("退出");m13.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {exit_Clicked();}});m11.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {newSubFrm_Clicked();}});m12.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {newAddFrm_Clicked();}});m1.add(m11);m1.add(m12);m1.addSeparator();m1.add(m13);bar.add(m1);bar.add(m2);this.setJMenuBar(bar);}private void newSubFrm_Clicked() {new StudentFrm();}private void newAddFrm_Clicked() {new AddStudent();}private void exit_Clicked() {if (JOptionPane.showConfirmDialog(this, "确认退出?", "退出系统",JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION)System.exit(0);}public MainFrm() {JPanel jp = (JPanel) this.getContentPane();initMenu();this.setSize(1000, 600);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public static void main(String[] args) {new MainFrm();}}package Ex7_2;import javax.swing.*;import javax.swing.table.DefaultTableModel;import java.awt.*;import java.awt.event.*;public class StudentFrm extends JFrame implements MouseListener,KeyListener{ private JTable table = null;private String[] cols = { "学号", "姓名", "专业", "是否有资格" };private JButton deleteBtn = new JButton("删除");private StudentDao studentDao = new StudentDao();private void initTable() {String[][] rows = studentDao.queryStudents();for (int i = 0; i < rows.length; i++)if ("0".equals(rows[i][3]))rows[i][3] = "有资格";elserows[i][3] = "无资格";table = new JTable(rows, cols);}private void updateTable() {String[][] rows = studentDao.queryStudents();for (int i = 0; i < rows.length; i++)if ("0".equals(rows[i][3]))rows[i][3] = "有资格";elserows[i][3] = "无资格";table.setModel(new DefaultTableModel(rows, cols));}private boolean isCellEditable(int row,int col){return true;}public boolean setRecorderingAllowed(){return true;}private void deleteBtn_Clicked() {int row = table.getSelectedRow();if (row > -1) {String sno = (String) table.getValueAt(row, 0);studentDao.deleteStudentBySno(sno);JOptionPane.showMessageDialog(this, "学号为" + sno + "记录删除成功!");updateTable();}}public StudentFrm(){JPanel jp = (JPanel) this.getContentPane();initTable();JScrollPane jsp_table = new JScrollPane(table);jp.add(jsp_table);JPanel jp_top = new JPanel();jp_top.add(deleteBtn);jp.add(jp_top, BorderLayout.NORTH);deleteBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {deleteBtn_Clicked();}});table.addMouseListener(this);table.addKeyListener(this);this.setSize(600, 400);this.setVisible(true);}String t1,t2,m;public void mouseClicked(MouseEvent e){int row1=table.getSelectedRow();int col1=table.getSelectedColumn();t1=table.getValueAt(row1,col1).toString();}public void mouseExited(MouseEvent e){}public void mousePressed(MouseEvent e) {}public void mouseReleased(MouseEvent e) {}public void mouseEntered(MouseEvent e) {}public void keyTyped(KeyEvent e) {}public void keyPressed(KeyEvent e) {if(e.getKeyCode()==KeyEvent.VK_ENTER){int row2=table.getSelectedRow();int col2=table.getSelectedColumn();t2=table.getValueAt(row2,col2).toString();int sno=row2;if(t1.equals(t2)){if(col2==0)m="sno";if(col2==1)m="sname";if(col2==2)m="ssubject";if(col2==3);m="enabled";}studentDao.modifyStudent(t2,sno,m);System.out.println(t2+sno+m);}}public void keyReleased(KeyEvent e) {}public static void main(String[] args) {new StudentFrm();}}package Ex7_2;import java.sql.*;public class StudentDao {private String driver = "sun.jdbc.odbc.JdbcOdbcDriver";private String url = "jdbc:odbc:mydb";private void executeUpdate(String sql) {try {Class.forName(driver);Connection con = DriverManager.getConnection(url);Statement cmd = con.createStatement();cmd.executeUpdate(sql);con.close();ex.printStackTrace();}}public void modifyStudent(Object t,int sno,String m){String sql="update student set m = 't' where sno = 'sno'";}public void descStudent(String sql){sql="select sno from student order by sno";}public void addStudent(String sno, String sname, String major, int zg) { String sql = "insert into student values('"+ sno + "','"+ sname+ "','" + major + "'," + zg + ")";executeUpdate(sql);}public void deleteStudentBySno(String sno) {String sql = "delete from student where sno='" + sno + "'";executeUpdate(sql);}public String[][] queryStudents() {String[][] rows = null;try {Class.forName(driver);Connection con = DriverManager.getConnection(url);Statement cmd = con.createStatement();String sql = "select count(*) from student";ResultSet rs = cmd.executeQuery(sql);rs.next();int rowcount = rs.getInt(1);rows = new String[rowcount][4];sql = "select * from student";rs = cmd.executeQuery(sql);rowcount = 0;while (rs.next()) {for (int i = 1; i <= 4; i++)rows[rowcount][i - 1] = rs.getString(i);rowcount++;}con.close();ex.printStackTrace();}return rows;}}package Ex7_2;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class AddStudent extends JFrame implements ActionListener { StudentDao studentDao = new StudentDao();JButton btn_add=new JButton("确定");JButton btn_del=new JButton("取消");JLabel lb_name=new JLabel("姓名");JLabel lb_snum=new JLabel("学号");JLabel lb_enabled=new JLabel("是否有资格选课");JLabel lb_major=new JLabel("专业");JTextField txt_name=new JTextField();JTextField txt_snum=new JTextField();JTextField txt_enabled=new JTextField();JTextField txt_major=new JTextField();public AddStudent(){JPanel jp=(JPanel)this.getContentPane();JPanel jp1=new JPanel();jp1.setLayout(new GridLayout(5,2,5,10));jp1.add(lb_snum);jp1.add(txt_snum);jp1.add(lb_name);jp1.add(txt_name);jp1.add(lb_major);jp1.add(txt_major);jp1.add(lb_enabled);jp1.add(txt_enabled);jp1.add(btn_add);jp1.add(btn_del);jp.add(jp1,BorderLayout.NORTH);btn_add.addActionListener(this);btn_del.addActionListener(this);this.setSize(400, 220);this.setVisible(true);this.setTitle("增加学生信息");}public void actionPerformed(ActionEvent e){int zg=0;if(e.getSource()==btn_add){if(txt_snum.getText().equals("是"))zg=1;studentDao.addStudent(txt_snum.getText(),txt_name.getText(),txt_major.g etText(),zg);dispose();}if(e.getSource()==btn_del){dispose();}}public static void main(String[] args){new AddStudent();}}。