JAVA中掌握JDBC的基本概念,并能够完成基本的数据库读写操作。

作者&投稿:米殷 (若有异议请与网页底部的电邮联系)
java中简述使用JDBC完成数据库操作的基本步骤。~

创建一个以JDBC连接数据库的程序,包含7个步骤:
1、加载JDBC驱动程序:
在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),
这通过java.lang.Class类的静态方法forName(String className)实现。
例如:
try{
//加载MySql的驱动类
Class.forName("com.mysql.jdbc.Driver") ;
}catch(ClassNotFoundException e){
System.out.println("找不到驱动程序类 ,加载驱动失败!");
e.printStackTrace() ;
}
成功加载后,会将Driver类的实例注册到DriverManager类中。
2、提供JDBC连接的URL
•连接URL定义了连接数据库时的协议、子协议、数据源标识。
•书写形式:协议:子协议:数据源标识
协议:在JDBC中总是以jdbc开始
子协议:是桥连接的驱动程序或是数据库管理系统名称。
数据源标识:标记找到数据库来源的地址与连接端口。
例如:(MySql的连接URL)
jdbc:mysql:
//localhost:3306/test?useUnicode=true&characterEncoding=gbk ;
useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为
gb2312或GBK,本参数必须设置为true 。characterEncoding=gbk:字符编码方式。
3、创建数据库的连接
•要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,
该对象就代表一个数据库的连接。
•使用DriverManager的getConnectin(String url , String username ,
String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和
密码来获得。
例如:
//连接MySql数据库,用户名和密码都是root
String url = "jdbc:mysql://localhost:3306/test" ;
String username = "root" ;
String password = "root" ;
try{
Connection con =
DriverManager.getConnection(url , username , password ) ;
}catch(SQLException se){
System.out.println("数据库连接失败!");
se.printStackTrace() ;
}
4、创建一个Statement
•要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3
种类型:
1、执行静态SQL语句。通常通过Statement实例实现。
2、执行动态SQL语句。通常通过PreparedStatement实例实现。
3、执行数据库存储过程。通常通过CallableStatement实例实现。
具体的实现方式:
Statement stmt = con.createStatement() ;
PreparedStatement pstmt = con.prepareStatement(sql) ;
CallableStatement cstmt =
con.prepareCall("{CALL demoSp(? , ?)}") ;
5、执行SQL语句
Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate
和execute
1、ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句
,返回一个结果集(ResultSet)对象。
2、int executeUpdate(String sqlString):用于执行INSERT、UPDATE或
DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等
3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的
语句。
具体实现的代码:
ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;
int rows = stmt.executeUpdate("INSERT INTO ...") ;
boolean flag = stmt.execute(String sql) ;
6、处理结果
两种情况:
1、执行更新返回的是本次操作影响到的记录数。
2、执行查询返回的结果是一个ResultSet对象。
• ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些
行中数据的访问。
• 使用结果集(ResultSet)对象的访问方法获取数据:
while(rs.next()){
String name = rs.getString("name") ;
String pass = rs.getString(1) ; // 此方法比较高效
}
(列是从左到右编号的,并且从列1开始)
7、关闭JDBC对象
操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声
明顺序相反:
1、关闭记录集
2、关闭声明
3、关闭连接对象
if(rs != null){ // 关闭记录集
try{
rs.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(stmt != null){ // 关闭声明
try{
stmt.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(conn != null){ // 关闭连接对象
try{
conn.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}

创建一个以JDBC连接数据库的程序,包含7个步骤:
1、加载JDBC驱动程序:
在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),
这通过java.lang.Class类的静态方法forName(String className)实现。
例如:
try{
//加载MySql的驱动类
Class.forName("com.mysql.jdbc.Driver") ;
}catch(ClassNotFoundException e){
System.out.println("找不到驱动程序类 ,加载驱动失败!");
e.printStackTrace() ;
}
成功加载后,会将Driver类的实例注册到DriverManager类中。
2、提供JDBC连接的URL
•连接URL定义了连接数据库时的协议、子协议、数据源标识。
•书写形式:协议:子协议:数据源标识
协议:在JDBC中总是以jdbc开始
子协议:是桥连接的驱动程序或是数据库管理系统名称。
数据源标识:标记找到数据库来源的地址与连接端口。
例如:(MySql的连接URL)
jdbc:mysql:
//localhost:3306/test?useUnicode=true&characterEncoding=gbk ;
useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为
gb2312或GBK,本参数必须设置为true 。characterEncoding=gbk:字符编码方式。
3、创建数据库的连接
•要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,
该对象就代表一个数据库的连接。
•使用DriverManager的getConnectin(String url , String username ,
String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和
密码来获得。
例如:
//连接MySql数据库,用户名和密码都是root
String url = "jdbc:mysql://localhost:3306/test" ;
String username = "root" ;
String password = "root" ;
try{
Connection con =
DriverManager.getConnection(url , username , password ) ;
}catch(SQLException se){
System.out.println("数据库连接失败!");
se.printStackTrace() ;
}
4、创建一个Statement
•要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3
种类型:
1、执行静态SQL语句。通常通过Statement实例实现。
2、执行动态SQL语句。通常通过PreparedStatement实例实现。
3、执行数据库存储过程。通常通过CallableStatement实例实现。
具体的实现方式:
Statement stmt = con.createStatement() ;
PreparedStatement pstmt = con.prepareStatement(sql) ;
CallableStatement cstmt =
con.prepareCall("{CALL demoSp(? , ?)}") ;
5、执行SQL语句
Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate
和execute
1、ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句
,返回一个结果集(ResultSet)对象。
2、int executeUpdate(String sqlString):用于执行INSERT、UPDATE或
DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等
3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的
语句。
具体实现的代码:
ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;
int rows = stmt.executeUpdate("INSERT INTO ...") ;
boolean flag = stmt.execute(String sql) ;
6、处理结果
两种情况:
1、执行更新返回的是本次操作影响到的记录数。
2、执行查询返回的结果是一个ResultSet对象。
• ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些
行中数据的访问。
• 使用结果集(ResultSet)对象的访问方法获取数据:
while(rs.next()){
String name = rs.getString("name") ;
String pass = rs.getString(1) ; // 此方法比较高效
}
(列是从左到右编号的,并且从列1开始)
7、关闭JDBC对象
操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声
明顺序相反:
1、关闭记录集
2、关闭声明
3、关闭连接对象
if(rs != null){ // 关闭记录集
try{
rs.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(stmt != null){ // 关闭声明
try{
stmt.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(conn != null){ // 关闭连接对象
try{
conn.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}

1.建立数据库database,建立数据表student。
字段:
sid 学号 文本
sname 姓名 文本
ssex 性别 文本(2字节)
saddress 地址 文本
stel 电话 文本

2.类代码
/******************************************************
使用:
设置数据库路径、sql语句、最大返回行数,使用getHTMLTable()返回html表格形式的字符串
executeSQL(String,String)执行SQL语句返回一个对象,请自己根据SQL语句转换成具体对象
*//////////////////////////////////////////////////////
import java.sql.*;
public class ListTableArea{
private String sqlString;
private String databasePath;
private int top;
private Statement stat=null; //连接数据库
public void setSQL(String SQL){
sqlString=SQL;
}
public void setDatabasePath(String path){
databasePath=path;
}
public void setTop(int frontIndex){
top=frontIndex;
}
private void linkDatabase(){
String strurl = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)}; DBQ="+databasePath;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection(strurl,"","");
stat = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
}catch(Exception e){
System.out.println(e);
}
}
public Object executeSQL(String sqlSentence,String database){
Object r=null;
try{
setSQL(sqlSentence);
setDatabasePath(database);
linkDatabase();
r=stat.executeQuery(sqlString);
}catch(Exception e){
System.out.println(e);
}
return r;
}
public void closeStatement(){
try{
stat.close();
}catch(Exception e){
System.out.println(e);
}
}
public String getHTMLTable(){
Statement sta=null;
String htmlTable=null;
Connection conn=null;
int width=100;
String strurl = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)}; DBQ="+databasePath;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn = DriverManager.getConnection(strurl,"","");
sta = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);

ResultSet rs=sta.executeQuery(sqlString);
ResultSetMetaData rsmd=rs.getMetaData();
int cols=rsmd.getColumnCount();
htmlTable=htmlTable+"<TABLE ALIGN=center BORDER=1>";
htmlTable=htmlTable+"<TR>";
for(int i=1;i<=cols;i++)
{
width=1200/cols;
htmlTable=htmlTable+"<TD ALIGN=center WIDTH="+width+">"+rsmd.getColumnLabel(i)+"</TD>";
}
htmlTable=htmlTable+"</TR>";
while(rs.next())
{
htmlTable=htmlTable+"<TR>";
for(int j=1;j<=cols;j++)
{
Object obj=(Object)rs.getObject(j);
if(obj==null) htmlTable=htmlTable+"<TD HEIGHT=20 WIDTH=100></TD>";
else
{
String area=obj.toString();
if(area.length()>20) {area=area.substring(0,17);area=area+"...";}
htmlTable=htmlTable+"<TD ALIGN=center WIDTH="+width+">"+area+"</TD>";
}
}
htmlTable=htmlTable+"</TR>";
}
htmlTable=htmlTable+"</TABLE>";
conn.close();
sta.close();
} catch(Exception e){
System.out.println(e.getMessage());
}
return htmlTable;
}
}

3.编写一个main()
例如:
public class App{
static public void main(String[] srge){
ListTableArea lta=new ListTableArea();
lta.setTop(10);
Object o=lta.executeSQL("INSERT INTO student(sid,sname,ssex,saddress,stel) VALUES('20060102\',\'曾凯\',\'男\',\'四川资中\',\'13888888888\')","D:\database.mdb");
//参数1是SQL语句,参数2是数据库路径
//插入了一条记录
int i=(int)o;
if(i==1) System.out.println("插入成功1条");
}
}

我给你一个有关数据库操作的类,作为参考吧。
package dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DBTools {
private String className=Messages.getString("DBTools.className"); //$NON-NLS-1$
private String url=Messages.getString("DBTools.url"); //$NON-NLS-1$
private String user=Messages.getString("DBTools.user"); //$NON-NLS-1$
private String password=Messages.getString("DBTools.password"); //$NON-NLS-1$
private Connection connection;
private Statement statement;
private ResultSet resultSet;

public Connection getConn() {
try {
Class.forName(className);
connection = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
return connection;
}

public int executeUpdate(String sql) {
int i=0;
connection=getConn();
try {
statement = connection.createStatement();
i=statement.executeUpdate(sql);
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}finally{
closeSt();
closeConn();
}
return i;
}

public ResultSet executeQuery(String sql) {
connection=getConn();
try {
statement=connection.createStatement();
resultSet = statement.executeQuery(sql);
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
return resultSet;
}

public void closeRs() {
if (resultSet!=null) {
try {
resultSet.close();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
}

public void closeSt() {
if (statement!=null) {
try {
statement.close();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
}

public void closeConn() {
if (connection!=null) {
try {
connection.close();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
}
}

...怎么个情况 求枪手完成你的作业?

JDBC是什么,有什么用途,是哪方面的
答:JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。有了JDBC,向各种关系数据发送SQL语句就是...

java jdbc驱动的四种类型请问具体都是什么意思
答:4型驱动了. 因为3型驱动可以把多种数据库驱 动都配置在中间层服务器.所以3型驱动最适合那种需要同时连接多个不同种类的数据库, 并且对并发连接要求高的应用. 4型驱动则适合那些连接单一数据库的工作组应用。现在是纯java 开发,所以一般都用type4的jdbc driver。

学生管理系统jdbc 调学生数据库 要有登录和单独修改学生密码 查学生成 ...
答:用户输入学号,程序从数据库中查询对应的学生信息,返回该学生的成绩信息。以下是一个简单的示例代码:```import java.sql.*;public class StudentManagementSystem { private Connection conn;public StudentManagementSystem() { try { // 连接数据库 Class.forName("com.mysql.jdbc.Driver");conn = ...

java中连接数据库的方式,有JDBC还有什么?
答:所以这种驱动 可以设计的很小,可以非常快速的加载到内存中. 但是,这种驱动在中间件层仍然需要有配置 其它数据库驱动程序,并且由于多了一个中间层传递数据,它的执行效率还不是最好. \x0d\x0a\x0d\x0aType4 纯JAVA驱动 \x0d\x0a这种驱动直接把jdbc调用转换为符合相关数据库系统规范的请求.由于...

在Java学习中,JDBC应该学到什么程度
答:当然是学的好比较好了,学不好的话,后面也可以学习其他的。

java 中JDBC 是干什么的??
答:JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。目录定义用途API与ODBC和其它API的...

Jdbc中是否支持事务,如果支持包含了哪些
答:如使用MySQL 的事务功能,就要求MySQL里的表的类型为Innodb才支持事务控制处理,否则,在Java程序中做了 commit 或 rollback ,但数据库中是不生效的。三、JDBC 事务处理基本流程 实现事务处理的基本流程如下:1)判断当前使用的JDBC驱动程序和数据库是否支持事务处理;2)在支持事务处理的前提下,取消系统...

Java中如何实现与后台数据库的连接?
答:在JAVA里面编写程序进行测试,在这里我的程序是让用户输入任意的表名与与列名,把该列的所有数据输出。源代码如下:import java.io.BufferedReader;import java.io.InputStreamReader;import java.sql.*;public class ODBCBridge { public static void main(String[] args) { String url="jdbc:odbc:...

java开发需要什么基础
答:java开发需要什么基础?让我们一起了解一下吧!1、熟练Java 基本面向对象知识和Java 常用集合的使用,这是能完成Java开发最基本的要求;2、掌握JDBC 与 MySQL 基础、HTML/CSS/JavaScript 前端基础技术、 Servlet 编写服务端程序等;3、熟练使用Java框架和使用 IDEA 开发工具,能实现简单的小程序。拓展:...

java需要学习些什么内容
答:如何使用它的附加服务,如连接池;7、JSP 、Servlet,这两个是初级Java程序员必须掌握的基本技能,是所有B/S结构框架的基础;8、企业流行框架:Struts、Spring、Hibernate、XML应用与开发、MVC应用与开发、Linux平台与应用;9、UML与Java设计模式;10、了解在Java项目中使用的新技术。如Ajax、javaee等。