您的位置:首页 > 编程语言 > Java开发

JAVA JDBC数据库开发

2012-10-17 10:37 232 查看

基于JDBC的数据库应用开发方法

开发步骤:

建立与数据库的连接

执行SQL语句

处理结果集

关闭数据库

一.加载驱动程序

一. 加载JDBC驱动程序 JDBC的驱动管理器查找到相应的数据库驱动程序并加载。加载的方式有两种。

1.  从系统地属性java.sql中读取Driver的类名,并一一注册
           

  2.  在程序中使用Class.forName()方法动态装载并注册数据库驱动

注:第二种驱动程序的加载方法比较常用。
使用java.lang.Class.forName()方法。
例如:如果要加载和注册JDBC-ODBC桥驱动,使用如下语句:

        Class.forName(“sun.jdbc.odbc.OdbcDriver”);

二. 建立数据库连接

这个步骤中要使数据库驱动连接到相应的DBMS。连接的建立通过使用Driver.Manager类的static方法getConnection(),

定义如下:

public static Connection getConnection(String url,String user,String password)

其中参数如下:

url是数据库连接串,指定使用的数据库访问协议以及数据源,其一般格式为:
jdbc:<subprotocol>:<subname>
例如使用JDBC-ODBC桥,数据源的名称是wombat,则url应为:
jdbc:odbc:wombat

user和password是建立的用户名和口令。
例如:String url = "jdbc:mysql://localhost:3306/notebook";
String user = "root";
String password = "majintao";

Connection con = DriverManager.getConnection(url,user,password);

三.  执行SQL语句

在所建立的数据库连接上,创建 Statement 对象,将各

SQL 语句发送到所连接的数据库执行。

对于已创建的数据库连接对象,调用 createStatement()方法,便可以得到一个 Statement 对象,其格式为:

 public Statement createStatement()throws SQLException;

接下来就可以通过该Statement对象发送SQL语句。对于SQL的检索操作,使用Statement的ExecuteQuery()方法,对于更行操作,使用ExecuteUpdate()方法。

四.处理结果集

结果集是保存 SQL 的 SELECT 语句的返回结果记录的表,是 ResultSet 类的对象。在结果集中通过游标控制具体的记录的访问,游标指向结果集中的当前记录。

在定位到结果集中的一行后,就可以执行数据的读取。这对于不同的 SQL 数据类型要使用不同的读取方法,以实现 SQL 数据类型与Java数据类型的转换。具体是根据 SQL 数据类型的不同,使用相应的 getXXX() 方法后去每个列的值。对于各种数据类型的数据的获取方法getXXX() ,JDBC 提供两种形式:
一种是以列名为参数,格式为getXXX(String colName)

例如:

ResultSet resultSet=stmt.executeQuery(“select a, b,c From Table”);
while(rs.next){
int x=rs.getInt(“a”);
Strign s =rs.getString(“b”);
Float f = getFloat(“c”);

}

另一种是以结果集中列的序号作为参数

 例如:
… while (rs.next()){
int x = rs.getInt(1);
String s = rs.getString(2);
float f = getFloat(3);

}

五.关闭数据库

在数据库所有操作都完成后,要显式地关闭连接。一般在关闭链接二十先释放Statement对象,
例如,
Connection con = DriverManager.getConnection(jdbc:odbc:
wombat,”Fernanda”,”J8”)
Statement stmt = con.createStatement(); …

stmt.close( ); con.close( );

因为一个数据库连接开销很大,所以只有当多有的数据库操作都完成时,才关闭连接。重复使用已有的连接时一种很重要的性能优化

示例代码 :

import java.sql.*;

public class JdbcTest{
public static void main(String args[]){
String url="jdbc:odbc:stu";
Connection con;
String sql;
Statement stmt;
String num,name,sex;
int age,math,eng,spec;

try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(java.lang.ClassNotFoundException e){
System.err.print("ClassNotFoundException:");
System.err.println(e.getMessage());
}
try{
con=DriverManager.getConnection(url,"java","java");
stmt=con.createStatement();
//向表中插入记录

sql="INSERT INTO STUDENT"+"VALUES('200108','赵小龙','男',20,71,62,76)";
stmt.executeUpdate(sql);
//检索student表中的所有记录
sql="SELECT * FROM STUDENT";
ResultSet rs = stmt.executeQuery(sql);
System.out.println("学号  姓名	性别	年龄"+"	高等数学	英语	专业课");

while(rs.next()){
num=rs.getString(1);
name=rs.getString(2);
sex=rs.getString(3);
age=rs.getInt(4);
math=rs.getInt(5);
eng=rs.getInt("英语");
spec=rs.getInt("专业课");
System.out.println(num+name+" "+sex+" "+age+" "+math+" "+eng+" "+spec);
}
//检索高等数学成绩80分以上的学生信息

rs=stmt.executeQuery("SELECT 学号,姓名,高等数学,英语,专业课"+"FROM STUDENT "+"WHERE 高等数学>=80");
System.out.println();
System.out.println("The students whose math mark is beyond 80 aer:");
while(rs.next()){
num=rs.getString(1);
name=rs.getString(2);
math=rs.getInt(3);
eng=rs.getInt("英语");
spec=rs.getInt("专业课");
System.out.println("学号="+num+" "+"姓名="+name+" "+"高等数学="+math+" "+"英语="+eng+" "+"专业课="+spec);
}//关闭连接
stmt.close();
con.close();
}catch(SQLException ex){
System.err.println("SQLException:"+ex.getMessage());
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息