的写法也有不同,但一般都遵守一下格式中的一种: jdbc:driver-id:database-id jdbc:driver-id//host/database-id 用户在使用的时候可以参加驱动程序的说明文档以获取正确的写法。
userpassword:用户和密码。
例如,用 JSQLConnect 建立和 MSSQL 的连接: String sConnStr quotjdbc:JSQLConnect://127.0.0.1/PUBSquot Connection ConnDriverManager.getConnectionsConnStrquotsaquotquotquot 12.3.3 Statement 接口 在连接上数据库后,下一步就是对数据库进行具体的操作,如查询、修改等。
这一过程要用到 Statement 接口。
总的来说,有三类 Statement 接口:Statement、PreparedStatement和 CallableStatement。
Statement 对象用于一般查询语句的执行。
在执行一个 SQL 查询语句前,必须首先创建一个 Statement 对象。
利用 Connection 类的 createStatement 方法可以创建一个 Statement对象。
例如: Statement stmtConn.createStatement Statement 对象的 executeQuery 方法用于执行一个查询语句。
executeQuery 方法的参数是一个 String 对象,即一个 SQL 查询语句。
它的返回值是一个 ResultSet 类的对象。
例如: ResultSet rsstmt.executeQueryquotSELECT FROM user_tablequot 在 Statement 对象使用完毕以后,应该关闭它: stmt.close Statement 对象在每次执行 SQL 语句时都将该语句传给数据库。
在多次执行同一语句的时候,这样做的效率会很低。
这时可以使用 PreparedStatement 对象。
它可以将 SQL 语句传给数据库作与编译,以后每次执行这个 SQL 的时候,速度具可以提高很多。
PreparedStatement 是 Statement 的一个子接口,因此它可以使用 Statement 接口中的方法。
在使用 PreparedStatement 时,首先要创建对象。
创建对象的时候应当给出要预编译的SQL 语句,例如: PreparedStatement pstmtConn.prepareStatementquotSELECT FROM user_tablequot 然后执行语句: ResultSet rspstmt.executeQuery 最后要关闭 PreparedStatement: pstmt.close CallableStatement 对象用于执行数据库重的存储过程。
存储过程即数据库中已经存在的 SQL 查询语句。
执行改存储过程的结果同执行相应的 SQL 语句时一样的。
CallableSatement 类是由 PreparedStatement 派生的子接口。
同样,在使用 CallabelStatement 对象的时,首先要创建对象。
它的参数是一个 String对象,一般的格式是quotcall procedurenamequot,其中 procedurename 是存储过程的名称。
例如,如果要执行数据库中的 Query1: CallableStatement cstmtConn.prepareCallquotcall Query1quot 然后执行存储过程: ResultSet rscstmt.execuiteQuery 最后关闭 CallableStatement cstmt.close 12.3.4 结果集 执行 SQL 查询语句以后,这些语句执行的结果都返回一个 ResultSet 类的对象。
要把查询的结果在显示出来,就必须对 ResultSet 对象进行一定的处理,本小节讲述对结果集的一般处理方法。
SQL 语句发送后,返回的结果通常存放在一个 ResultSet 类的对象中,ResultSet 可以看作是一个表, 这个表包含由 SQL 返回的列名和相应的值, ResultSet 对象中维持了一个指向当前行的指针。
最初,这个指针指向表的第一行之前。
Result 类的 next 方法可以使指针向下移动一行,因此第一次使用 next 方法将指针移到的一行,这时候可以对的一行进行处理。
处理完毕之后再用 next 使得指针移向第二行,继续处理第二行数据。
Result 类的 next方法返回一个 boolean 类型的值, 如果这个值是 true,那么说明已经成功的移动到了下一行,如果是 false 那么说明表已经没有下一行了,也就是说,整个表已经处理完毕。
注意,在使用 next 对 ResultSet 对象操作之前,应当判断一下 ResultSet 的对象值是否为 NULL,即空集。
方法 getXXX 提供了获取当前行中某列值的途径。
这里的 XXX 指的是 JDBC 中 java的数据类型,例如 getIntgetString 等等。
在每一行内,可按任何次序获取列值。
但为了保证可移植性,应该从左至右获取列值,并且一次性地读取列值。
列名或列号可用于标识要从中获取数据的列。
例如,如果 ResultSet 对象 rs 的第二列名为quottitlequot,并将值存储为字符串,则下列任一代码将获取存储在该列中的值: String s rs.getStringquottitlequot String s rs.getString2 注意列是从左至右编号的,并且从列 1 开始。
同时,用作 getXXX 方法的输入的列名不区分大小写。
下面是简单检索的一段程序: Statement stmt conn.creatStetement String SQLquotselect IDName from user_tablequot ResultSet rsstmt.executeQuerySQL whilers.next //移动指针到下一行 String idrs.getID1 //得到第一列,即 ID 的值 String namers.getStringquotNamequot //得到 Name 的值 System.out.printlnidquot quotname //输出结果 12.3.5 元数据集 为了发现数据库的信息,必须获取 DatabaseMetaData 对象。
一旦程序已.
上一篇:
Java程序员上班那点事儿
下一篇:
关联分类方法在铝电解中的应用研究