当前位置:文档之家› JAVA对数据库操作常用对象及方法整合

JAVA对数据库操作常用对象及方法整合


String resultRow = ""; for (int i = 1; i < cols; i++) { resultRow += resultMetaData.getColumnName(i) + ";"; } System.out.println(resultRow); while (results.next()) { resultRow = ""; for (int i = 1; i < cols; i++) { try { resultRow += results.getString(i) + ";"; } catch (NullPointerException e) { System.out.println(e.getMessage()); } } System.out.println(resultRow); } } catch (Exception e) { System.out.println("query exception"); } finally { results.close(); } }
}
补充高级内容
关于调用 SQLServer 存储过程的例子:(用到了我们开发的数据库 连接类)
CREATE PROCEDURE [dbo].[sp_getStudentByName](@name char(10)) AS Select * from Students where [Name]=@name GO
尽管每个对象都有大量的方法让您获得数据库元素的极为详细的 信息,但在每个对象中都有几种主要的方法使您可获得数据的最 重要信息。然而,如果您希望看到比此处更多的信息,建议您学 习文档以获得其余方法的说明。
ResultSet
ResultSet 对象是 JDBC 中最重要的单个对象。从本质上讲,它是 对一个一般宽度和未知长度的表的一种抽象。几乎所有的方法和 查询都将数据作为 ResultSet 返回。ResultSet 包含任意数量的命 名列,您可以按名称访问这些列。它还包含一个或多个行,您可 以按顺序自上而下逐一访问。在您使用 ResultSet 之前,必须查 询它包含多少个列。此信息存储在 ResultSetMetaData 对象中。
next(); 将行指针移到下一行。如果没有剩余行,则返回 false。
Close(); 关闭结果集。
getMetaData(); 返回 ResultSetMetaData 对象。
ResultSetMetaData
您使用 getMetaData() 方法从 ResultSet 中获取 ResultSetMetaData 对象。您可以使用此对象获得列的数目和类型 以及每一列的名称。
一个简单的 JDBC 程序
我们已经学习了 JDBC 的所有基本功能,现在我们可以编写一个 简单的程序,该程序打开数据库,打印它的表名以及某一表列的 内容,然后对该数据库执行查询。此程序如下所示:
package skydevkit; import java.sql.*; public class JdbcOdbc_test {
getURL(); 获得您所连接的 URL 名称。
getDriverName(); 获得您所连接的数据库驱动程序的名称。
获取有关表的信息
您可以使用 DataBaseMetaData 的 getTables() 方法来获取数据 库中表的信息。这个方法有如下 4 个 String 参数:
results =dma.getTables(catalog, schema, tablemask, types[]);
try { pstmt = con.prepareCall("{call sp_insertStudent(?,?,?)}"); pstmt.setString(1, "zengqingsong"); pstmt.setInt(2, 22);
pstmt.registerOutParameter(3, Types.INTEGER); pstmt.executeUpdate();
DbObject DbO = new DbObject(new SqlServerConnectionFactory("localhost", 1433, "demo", "sa", "")); Connection con = DbO.getConnection(); CallableStatement pstmt = null; System.out.println("TestDB1()............"); /* try { pstmt = con.prepareCall("{call sp_getStudentById(?)}"); pstmt.setInt(1, 1); }*/
BIGINT BINARY BIT CHAR DATE DECIMAL DOUBLE FLOAT INTEGER LONGVARBINARY LONGVARCHAR NULL NUMERIC OTHER
REAL SMALLINT TIME TIMESTAMP TINYINT VARBINARY VARCHAR
您可以多种形式获取 ResultSet 中的数据,这取决于每个列中存 储的数据类型。另外,您可以按列序号或列名获取列的内容。请 注意,列序号从 1 开始,而不是从 0 开始。ResultSet 对象的一 些最常用方法如下所示。
getInt(int); 将序号为 int 的列的内容作为整数返回。
getInt(String); 将名称为 String 的列的内容作为整数返回。
int id = pstmt.getInt(3); System.out.println(id); }
使用返回参数的例子:
CREATE PROCEDURE [dbo].[sp_insertStudent](@name char(10),@age int,@id int OUTPUT) AS insert into Students([Name],[Age]) values (@name,@age) select @id=@@IDENTITY –测试输出参数 return 30 –测试返回 30 GO
try { pstmt = con.prepareCall("{call sp_getStudentByName(?)}"); //注意参 数如何传递 pstmt.setString(1, "Tom"); } ……
使用输出参数:
CREATE PROCEDURE [dbo].[sp_insertStudent](@name char(10),@age int,@id int OUTPUT) AS insert into Students([Name],[Age]) values (@name,@age) select @id=@@IDENTITY GO
ResultSet results; ResultSetMetaData rsmd; DatabaseMetaData dma; Connection con;
public JdbcOdbc_test() throws SQLException { String url = "jdbc:odbc:Northwind"; try { //加载 JDBC-ODBC 桥驱动程序 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con = DriverManager.getConnection(url);//连接数据库 dma = con.getMetaData();//获取数据库的元数据 System.out.println("Connected to:" + dma.getURL()); System.out.println("Driver " + dma.getDriverName()); } catch (Exception e) { System.out.println(e); } try { Statement stmt = con.createStatement(); results = stmt.executeQuery("select * from 客户;"); ResultSetMetaData resultMetaData = results.getMetaData(); int cols = resultMetaData.getColumnCount();
DatabaseMetaData
DatabaseMetaData 对象可为您提供整个数据库的信息。您主要用 它获取数据库中表的名称,以及表中列的名称。由于不同的数据 库支持不同的 SQL 变体,因此,也有多种方法查询数据库支持哪 些 SQL 方法。
getCatalogs() 返回该数据库中的信息目录列表。使用 JDBC-ODBC Bridge 驱动程序,您可以获得用 ODBC 注册的数据库列表。这很 少用于 JDBC-ODBC 数据库。
DatabaseMetaData 有关整个数据库的信息:表名、表的索引、数 据库产品的名称和版本、数据库支持的操作。
ResultSet 关于某个表的信息或一个查询的结果Байду номын сангаас您必须逐行访问 数据行,但是您可以任何顺序访问列。
ResultSetMetaData 有关 ResultSet 中列的名称和类型的信息。
Tablemask 一个掩码,用来描述您要检索的表的名称。如果您希 望检索所有表名,则将其设为通配符 %。请注意,SQL 中的通配 符是 % 符号,而不是一般 PC 用户的 * 符号。
相关主题