极度郁闷,有一段时间没登陆51了,今天回来竟然把提示问题给弄丢了,猜了半个小时才猜出来。。。。

JDBC基本使用步骤

上一篇 / 下一篇  2010-01-07 08:37:44 / 个人分类:JAVA

JDBC基本使用步骤
加载驱动
获取数据库连接
获得Statement或其子类对象
执行Statement语句
处理返回结果
关闭Statement
关闭数据库连接
具体说明:
1、加载驱动
驱动程序下载网址:
http://servlet.java.sun.com/products/jdbc/drivers

通过Class类的forName()方法来加载特定的数据库驱动程序 。如:
//连接Oracle8i/9i 数据库

Class.forName("oracle.jdbc.driver.OracleDriver");
//连接Sql Server7.0/2000数据库

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); // 连接MySQL数据库

Class.forName(org.gjt.mm.mysql.Driver);   
附:用JDBC/ODBC桥驱动程序连接SQL Server2000
1.单击[开始]-[设置]-[控制面板]-[管理工具]-[数据源(ODBC)].
2.选择[系统DSN]-[添加]-选择[SQL Server]-[完成].
3.在[创建到SQL Server的新数据源]对话框中.[名称:university]-[服务器:和自己的服务器一样,这里是WNIGHT-01C72C40]-[下一步].
4.在[创建到SQL Server的新数据源]对话框中,选择[使用用户输入登录ID和密码的SQL Server验证]-[ID:user/密码:user]-[下一步].
5.更改默认数据库为:[选择默认数据库]-[下一步].
6.单击[完成],然后点击[测试数据源]查测试是否正确.
7.利用数据库URL描述ODBC数据源,然后加载JDBC/ODBC桥驱动程序,如下:

String url = "jdbc:odbc:university?user=user&passowrd=user";

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Connection conn = DriverManager.getConnection(url);
2、获取数据库连接
Connection对象代表与数据库的连接,用DriverManager类的getConnection()方法获取与数据库的连接。此方法需要传入一个定位即将连接的数据库的URL的字符串参数,这个URL由三部分组成:
<protocol>:<subprotocol>:<subname>
其中:
Protocol:协议,总是 jdbc
Subprotocol:子协议,表示数据库连接机制的名称,如:odbc 或 mysql等
Subname:数据库标识。包含数据库服务器的位置的信息:数据库名、用户名、口令等
例如:
获取Oracle的连接:

String url="jdbc:oracle:thin:@localhost:1521:orcl";

//orcl为你的数据库的SID

String user="scott";

String password="tiger";

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

获取SQLServer的连接:

String url="jdbc:microsoft:sqlserver://localhost:1433;

DatabaseName=pubs";   

//pubs为你的数据库的   

String user="sa";   

String password="";   

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

以上也可以写成如下的格式:

String url="jdbc:microsoft:sqlserver://localhost:1433;databaseName=university?user=admin&password=123456";

Connection conn = DriverManager.getConnection(url);
获取MySQL的连接:

String url ="jdbc:mysql://localhost:3306/softforum?
user=soft&password=soft1234";   
//testDB为你的数据库名   
Connection conn=DriverManager.getConnection(url);

3、创建Statement或子类的对象。
Statement对象允许执行简单的SQL查询。通过Connection对象的createStatement()方法创建一个Statement对象:

Statementstmt = conn.createStatement();
另外还可以产生指定类型和同步值的ResultSet对象:

StatementcreateStatement(intresultSetType,intresultSetConcurrency)
1.resultSetType的值:

ResultSet.TYPE_FORWARD_ONLY:结果集不可回滚
ResultSet.TYPE_SCROLL_INSENSITIVE:可以回滚,但不反映数据库的变化
ResultSet.TYPE_SCROLL_SENSITIVE:可以回滚,并反映数据库的变化
2.resultSetConcurrency的值:

ResultSet.CONCUR_READ_ONLY:不能用结果集更新数据库
ResultSet.CONCUR_UPDATABLE:可以用结果集更新数据库
结果集元数据
java.sql包中有两个元数据(MetaData)接口:
DatabaseMetaData
这个接口用来获取关于数据库的信息,如:数据库中所有表格的列表、系统函数、关键字、数据库产品名、数据库支持的JDBC驱动器名等。

ResultSetMetaData
该接口用来获取关于存储在ResultSet对象中列的信息,如:每一列的数据类型、列标题及属性等。
其常用方法:
public int getColumnCount();返回存储在ResultSet对象中列的数目。
public String getColumnName(int column_number);返回指定第column_number列的列名。
public String getColumnTypeName(int column_number);返回特定数据库指定第column_number列的数据类型。
通过调用ResultSet类的getMetaData()方法得到关于该结果集的元数据对象:ResultSetMetaData。
例:
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.DriverManager;
import java.sql.ResultSetMetaData;
public class JDBC_01
{
  public static void main(String[] args)   
  {
    Connection con = null;
    Statement stmt = null;
    ResultSet rs = null;
    try
    {
      //加载SQL Server的驱动,在这里是固定的格式
      Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
      //获取SQLServer的数据库连接
      String url = "jdbc:microsoft:sqlserver://192.168.0.253:1433;databaseName = j2ee";
      //填写数据库的用户名和密码
      String user = "user";
      String password = "user";
      //连接数据库
      con = DriverManager.getConnection(url,user,password);
      //connect的对象创建Statement允许执行SQL语句
      stmt = con.createStatement();
      //一条SQL语句
      String sql = "select * from contact where fname = '米亚斯多德'";
      //执行SQL查询语句,这里查询返回的值给字符串rs,要返回值的SQL语句要用到
      //的方法是executeQuery(SQLstatement)
      rs = stmt.executeQuery(sql);
      //若rs的记录已是记录末,则说明数据库中没有刚才查询的这条记录,则插入之,若
      //有这条记录,则显示记录值.
      if(!rs.next())
      {
        sql = "insert contact(fname,password) values('米亚斯多德','1')";
        //插入记录不返回值,要用方法executeUpdate(SQLstatement)
        stmt.executeUpdate(sql);
      }
      else
      {
        //rs的getString(1)返回第一个字段所对应的字符串,以此类推
        System.out.println(rs.getString(1));
        System.out.println(rs.getString(2));
        sql = "select * from contact";
        rs = stmt.executeQuery(sql);
        //查询已不是在记录末
        while(rs.next())
        {
          System.out.println(rs.getString(1));
        }
        //得到rs的结果集数据元对象
        ResultSetMetaData rsmd = rs.getMetaData();
        //得到字段(列)的数目
        int colCount = rsmd.getColumnCount();
        System.out.println("ColumnCount:" + colCount);
        //得到并显示出字段名和数据类型
        for(int i = 1;i <= colCount;i++)
        {
          String colName = rsmd.getColumnName(i);
          String typeName = rsmd.getColumnTypeName(i);
          System.out.println(colName + "\t" + typeName);
        }
      }       
    }
    catch(Exception e)
    {
      System.out.println("Error:" + e);
    }
    finally
    {
      try
      {
        //注意关闭建立的数据元对象,连接对象,返回的结果数据对象
        stmt.close();
        con.close();
        rs.close();
      }
      catch(Exception e)
      {
        System.out.println("Error:" + e);
      }
    }
  }
}
4、 执行Statement。
Statement对象常用两个方法完成简单的操作:
public ResultSet executeQuery(String sql)方法执行简单的查询,并返回ResultSet对象。
public int executeUpdate(String sql) 方法执行SQL INSERT/UPDATE/DELETE 语句,返回int 值。
例:

String sql = "SECLECT * FROM USER";
String sql2 = "UPDATE user SET password='123456' WHERE name='king'";
ResultSet rs = stmt.executeQuery(sql);
stmt.executeUpdate(sql2);
5、 处理返回结果
ResultSet对象是封闭了返回结果的对象,它提供访问数据的方法。该对象有一个指针,指向数据当前行。初始时指针在第一行之前,next()方法把指针移到下一行。
通过调用getXXX(int column_number)方法得到行中的列数据。XXX指的是列的数据类型如:String, Integer,Date等.
例:
ResultSet rs = stmt.executeQuery("SELECT * FROM user");
While(rs.next())
{
    System.out.println(rs.getString(1));
}
6、 关闭Statement。
数据库操作结束后应该关闭数据库操作对象,以释放资源。如:
stmt.close();
7、 关闭数据库连接。

conn.close();

TAG: java jdbc

 

评分:0

我来说两句

Open Toolbar