java中操作数据库中的几个重要类

来源:互联网 发布:创维高清网络机顶盒 编辑:程序博客网 时间:2024/06/10 15:19
编写访问数据库的Java程序还需要几个重要的类和接口。

DriverManager类

DriverManager类处理驱动程序的加载和建立新数据库连接。DriverManager是java.sql包中用于管理数据库驱动程序的类。通常,应用程序只使用类DriverManager的getConnection()静态方法,用来建立与数据库的连接,返回Connection对象:
    static Connection getConnection(String url,String username,String password)
指定数据的URL用户名和密码创建数据库连接对象。url的语法格式是:
    jdbc:<数据库的连接机制>:<ODBC数据库名>

Connection类

Connection类是java.sql包中用于处理与特定数据库连接的类。Connection对象是用来表示数据库连接的对象,Java程序对数据库的操作都在这种对象上进行。Connection类的主要方法有:
  1. Statement createStatement():创建一个Statement对象。
  2. PreparedStatement prepareStatement(String sql) :创建一个PreparedStatement 对象来将参数化的 SQL 语句发送到数据库。
  3. Statement createStatement(int resultSetType,int resultSetConcurrency):创建一个Statement对象,生成具有特定类型的结果集。
  4. void commit():提交对数据库的改动并释放当前持有的数据库的锁。
  5. void rollback():回滚当前事务中的所有改动并释放当前连接持有的数据库的锁。
  6. String getCatalog():获得连接对象的当前目录。
  7. boolean isClose():判断连接是否已关闭。
  8. boolean isReadOnly():判断连接是否为只读模式。
  9. void setReadOnly():设置连接为只读模式。
  10. void close():释放连接对象的数据库和JDBC资源。

Statement类

Statement类是java.sql包中用于在指定的连接中处理SQL语句的类。数据库编程的要点是在程序中嵌入SQL命令。程序需要声明和创建连接数据库的Connection对象,并让该对象连接数据库。调用类DriverManager的静态方法getConnection()获得Connection对象,实现程序与数据库的连。然后,用Statement类声明SQL语句对象,并调用Connection对象的createStatement()方法,创建SQL语句对象。例如,以下代码创建语句对象sql:
    Statement sql = null;
    try{
        sql = con.createStatement();
    }catch(SQLException e){}

ResultSet类

有了SQL语句对象后,调用语句对象的方法executeQuery()执行SQL查询,并将查询结果存放在一个用ResultSet类声明的对象中,例如,以下代码读取学生成绩表存于rs 对象中:
    ResultSet rs = sql.executeQuery(“SELECT * FROM ksInfo”);
ResultSet对象实际上是一个由查询结果数据的表,是一个管式数据集,由统一形式的数据行组成,一行对应一条查询记录。在ResultSet对象中隐含着一个游标,一次只能获得游标当前所指的数据行,用next方法可取下一个数据行。用数据行的字段(列)名称或位置索引(自1开始)调用形如getXXX()方法获得记录的字段植 。以下是ResultSet对象的部分方法:
  1. byte getByte(int columnIndex):返回指定字段的字节值。
  2. Date getDate(int columnIndex):返回指定字段的日期值。
  3. float getFloat(int columnIndex):返回指定字段的浮点值。
  4. int getInt(int columnIndex):返回指定字段的整数值。
  5. String getString(int columnIndex):返回指定字段的字符串值。
  6. double getDouble(String columnName):返回指定字段的双精度值。
  7. long getLong(String columnName):返回指定字段的long型整值。
  8. boolean next():返回是否还有下一字段。
以上方法中的columnIndex是位置索引,用于指定字段,columnName是字段名。

用户需要在查询结果集上浏览,或前后移动、或显示结果集的指定记录,这称为可滚动结果集。程序要获得一个可滚动结果集,只要在获得SQL的语句对象时,增加指定结果集的两个参数即可。例如,以下代码:
    Statement stmt = con.createStatement(type,concurrency);
    ResultSet rs = stmt.executeQuery(SQL语句)
语句对象stmt的SQL查询就能得到相应类型的结果集。
  • int 型参数type决定可滚动集的滚动方式:
    • ResultSet.TYPE_FORWORD_ONLY,结果集的游标只能向下滚动。
    • ResultSet.TYPE_SCROLL_INSENSITIVE,游标可上下移动,当数据库变化时,当前结果集不变。
    • ResultSet. TYPE_SCROLL_SENSITIVE,游标可上下移动,当数据库变化时,当前结果集同步改变。
  • int 型参数concurrency决定数据库是否与可滚动集同步更新:
    • ResultSet.CONCUR_READ_ONLY,不能用结果集更新数据库中的表。
    • ResultSet.CONCUR_UPDATETABLE,能用结果集更新数据库中的表。

例如,以下代码利用连接对象connect,创建Statement对象stmt,指定结果集可滚动,并以只读方式读数据库:
    stmt = connect.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
    ResultSet.CONCUR_READ_ONLY);
可滚动集上另外一些常用的方法如下:
  1. boolean previous():将游标向上移动,当移到结果集的第一行时,返回false。
  2. void beforeFirst():将游标移结果集的第一行之前。
  3. void afterLast():将游标移到结果集的最后一行之后。
  4. void first():将游标移到第一行。
  5. void last():将游标移到最后一行。
  6. boolean isAfterLast():判游标是否在最后一行之后。
  7. boolean isBeforeFirst():判游标是否在第一行之前。
  8. boolean isLast():判游标是否在最后一行。
  9. boolean isFirst():判游标是否在第一行。
  10. int getRow():获取当前所指的行(行号自1开始编号,结果集空,返回0)。
  11. boolean absolute(int row):将游标移到row行。

public interface ResultSetMetaData
extends Wrapper

可用于获取关于 ResultSet 对象中列的类型和属性信息的对象。以下代码片段创建ResultSet 对象 rs,创建 ResultSetMetaData 对象 rsmd,并使用 rsmd 查找 rs 有多少列,以及 rs 中的第一列是否可以在WHERE 子句中使用。

     ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM TABLE2");     ResultSetMetaData rsmd = rs.getMetaData();     int numberOfColumns = rsmd.getColumnCount();     boolean b = rsmd.isSearchable(1); 


字段摘要static intcolumnNoNulls
          指示列不允许使用 NULL 值的常量。
static intcolumnNullable
          指示列允许使用 NULL 值的常量。
static intcolumnNullableUnknown
          指示不知道列的值是否可为 null 的常量。

  

方法摘要 StringgetCatalogName(int column)
          获取指定列的表目录名称。
 StringgetColumnClassName(int column)
          如果调用方法 ResultSet.getObject 从列中获取值,则返回构造其实例的 Java 类的完全限定名称。
 intgetColumnCount()
          返回此 ResultSet 对象中的列数。
 intgetColumnDisplaySize(int column)
          指示指定列的最大标准宽度,以字符为单位。
 StringgetColumnLabel(int column)
          获取用于打印输出和显示的指定列的建议标题。
 StringgetColumnName(int column)
          获取指定列的名称。
 intgetColumnType(int column)
          获取指定列的 SQL 类型。
 StringgetColumnTypeName(int column)
          获取指定列的数据库特定的类型名称。
 intgetPrecision(int column)
          获取指定列的指定列宽。
 intgetScale(int column)
          获取指定列的小数点右边的位数。
 StringgetSchemaName(int column)
          获取指定列的表模式。
 StringgetTableName(int column)
          获取指定列的名称。
 booleanisAutoIncrement(int column)
          指示是否自动为指定列进行编号。
 booleanisCaseSensitive(int column)
          指示列的大小写是否有关系。
 booleanisCurrency(int column)
          指示指定的列是否是一个哈希代码值。
 booleanisDefinitelyWritable(int column)
          指示在指定的列上进行写操作是否明确可以获得成功。
 intisNullable(int column)
          指示指定列中的值是否可以为 null。
 booleanisReadOnly(int column)
          指示指定的列是否明确不可写入。
 booleanisSearchable(int column)
          指示是否可以在 where 子句中使用指定的列。
 booleanisSigned(int column)
          指示指定列中的值是否带正负号。
 booleanisWritable(int column)
          指示在指定的列上进行写操作是否可以获得成功。


public interface PreparedStatement
extends Statement

表示预编译的 SQL 语句的对象。

SQL 语句被预编译并存储在 PreparedStatement 对象中。然后可以使用此对象多次高效地执行该语句。

注:用于设置 IN 参数值的设置方法(setShortsetString 等等)必须指定与输入参数的已定义 SQL 类型兼容的类型。例如,如果 IN 参数具有 SQL 类型INTEGER,那么应该使用 setInt 方法。

如果需要任意参数类型转换,使用 setObject 方法时应该将目标 SQL 类型作为其参数。

在以下设置参数的示例中,con 表示一个活动连接:

   PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES                                     SET SALARY = ? WHERE ID = ?");   pstmt.setBigDecimal(1, 153833.00)   pstmt.setInt(2, 110592) 

另请参见:
Connection.prepareStatement(java.lang.String),ResultSet

字段摘要

 

从接口 java.sql.Statement 继承的字段CLOSE_ALL_RESULTS, CLOSE_CURRENT_RESULT, EXECUTE_FAILED, KEEP_CURRENT_RESULT, NO_GENERATED_KEYS, RETURN_GENERATED_KEYS, SUCCESS_NO_INFO

   

方法摘要 voidaddBatch()
          将一组参数添加到此 PreparedStatement 对象的批处理命令中。 voidclearParameters()
          立即清除当前参数值。 booleanexecute()
          在此 PreparedStatement 对象中执行 SQL 语句,该语句可以是任何种类的 SQL 语句。 ResultSetexecuteQuery()
          在此 PreparedStatement 对象中执行 SQL 查询,并返回该查询生成的 ResultSet 对象。 intexecuteUpdate()
          在此 PreparedStatement 对象中执行 SQL 语句,该语句必须是一个 SQL 数据操作语言(Data Manipulation Language,DML)语句,比如INSERTUPDATEDELETE 语句;或者是无返回内容的 SQL 语句,比如 DDL 语句。 ResultSetMetaDatagetMetaData()
          获取包含有关 ResultSet 对象列信息的 ResultSetMetaData 对象,ResultSet 对象将在执行此PreparedStatement 对象时返回。 ParameterMetaDatagetParameterMetaData()
          获取此 PreparedStatement 对象的参数的编号、类型和属性。 voidsetArray(int parameterIndex,Array x)
          将指定参数设置为给定 java.sql.Array 对象。 voidsetAsciiStream(int parameterIndex,InputStream x)
          将指定参数设置为给定输入流。 voidsetAsciiStream(int parameterIndex,InputStream x, int length)
          将指定参数设置为给定输入流,该输入流将具有给定字节数。 voidsetAsciiStream(int parameterIndex,InputStream x, long length)
          将指定参数设置为给定输入流,该输入流将具有指定字节数。 voidsetBigDecimal(int parameterIndex,BigDecimal x)
          将指定参数设置为给定 java.math.BigDecimal 值。 voidsetBinaryStream(int parameterIndex,InputStream x)
          将指定参数设置为给定输入流。 voidsetBinaryStream(int parameterIndex,InputStream x, int length)
          将指定参数设置为给定输入流,该输入流将具有给定字节数。 voidsetBinaryStream(int parameterIndex,InputStream x, long length)
          将指定参数设置为给定输入流,该输入流将具有指定字节数。 voidsetBlob(int parameterIndex,Blob x)
          将指定参数设置为给定 java.sql.Blob 对象。 voidsetBlob(int parameterIndex,InputStream inputStream)
          将指定参数设置为 InputStream 对象。 voidsetBlob(int parameterIndex,InputStream inputStream, long length)
          将指定参数设置为 InputStream 对象。 voidsetBoolean(int parameterIndex, boolean x)
          将指定参数设置为给定 Java boolean 值。 voidsetByte(int parameterIndex, byte x)
          将指定参数设置为给定 Java byte 值。 voidsetBytes(int parameterIndex, byte[] x)
          将指定参数设置为给定 Java byte 数组。 voidsetCharacterStream(int parameterIndex,Reader reader)
          将指定参数设置为给定 Reader 对象。 voidsetCharacterStream(int parameterIndex,Reader reader, int length)
          将给定参数设置为给定 Reader 对象,该对象具有给定字符数长度。 voidsetCharacterStream(int parameterIndex,Reader reader, long length)
          将指定参数设置为给定 Reader 对象,该对象具有给定字符数长度。 voidsetClob(int parameterIndex,Clob x)
          将指定参数设置为给定 java.sql.Clob 对象。 voidsetClob(int parameterIndex,Reader reader)
          将指定参数设置为 Reader 对象。 voidsetClob(int parameterIndex,Reader reader, long length)
          将指定参数设置为 Reader 对象。 voidsetDate(int parameterIndex,Date x)
          使用运行应用程序的虚拟机的默认时区将指定参数设置为给定 java.sql.Date 值。 voidsetDate(int parameterIndex,Date x, Calendar cal)
          使用给定的 Calendar 对象将指定参数设置为给定 java.sql.Date 值。 voidsetDouble(int parameterIndex, double x)
          将指定参数设置为给定 Java double 值。 voidsetFloat(int parameterIndex, float x)
          将指定参数设置为给定 Java REAL 值。 voidsetInt(int parameterIndex, int x)
          将指定参数设置为给定 Java int 值。 voidsetLong(int parameterIndex, long x)
          将指定参数设置为给定 Java long 值。 voidsetNCharacterStream(int parameterIndex,Reader value)
          将指定参数设置为 Reader 对象。 voidsetNCharacterStream(int parameterIndex,Reader value, long length)
          将指定参数设置为 Reader 对象。 voidsetNClob(int parameterIndex,NClob value)
          将指定参数设置为 java.sql.NClob 对象。 voidsetNClob(int parameterIndex,Reader reader)
          将指定参数设置为 Reader 对象。 voidsetNClob(int parameterIndex,Reader reader, long length)
          将指定参数设置为 Reader 对象。 voidsetNString(int parameterIndex,String value)
          将指定参数设置为给定 String 对象。 voidsetNull(int parameterIndex, int sqlType)
          将指定参数设置为 SQL NULL voidsetNull(int parameterIndex, int sqlType,String typeName)
          将指定参数设置为 SQL NULL voidsetObject(int parameterIndex,Object x)
          使用给定对象设置指定参数的值。 voidsetObject(int parameterIndex,Object x, int targetSqlType)
          使用给定对象设置指定参数的值。 voidsetObject(int parameterIndex,Object x, int targetSqlType, int scaleOrLength)
          使用给定对象设置指定参数的值。 voidsetRef(int parameterIndex,Ref x)
          将指定参数设置为给定 REF(<structured-type>) 值。 voidsetRowId(int parameterIndex,RowId x)
          将指定参数设置为给定 java.sql.RowId 对象。 voidsetShort(int parameterIndex, short x)
          将指定参数设置为给定 Java short 值。 voidsetSQLXML(int parameterIndex,SQLXML xmlObject)
          将指定参数设置为给定 java.sql.SQLXML 对象。 voidsetString(int parameterIndex,String x)
          将指定参数设置为给定 Java String 值。 voidsetTime(int parameterIndex,Time x)
          将指定参数设置为给定 java.sql.Time 值。 voidsetTime(int parameterIndex,Time x, Calendar cal)
          使用给定的 Calendar 对象将指定参数设置为给定 java.sql.Time 值。 voidsetTimestamp(int parameterIndex,Timestamp x)
          将指定参数设置为给定 java.sql.Timestamp 值。 voidsetTimestamp(int parameterIndex,Timestamp x, Calendar cal)
          使用给定的 Calendar 对象将指定参数设置为给定 java.sql.Timestamp 值。 voidsetUnicodeStream(int parameterIndex,InputStream x, int length)
          已过时。   voidsetURL(int parameterIndex,URL x)
          将指定参数设置为给定 java.net.URL 值。
0 0
原创粉丝点击