JDBC中的常用对象


JDBC中的主要类(接口)

在JDBC中常用的类有:

 DriverManager;

 Connection;

 Statement;

 ResultSet。

DriverManager

1.       Class.forName(“com.MySQL.jdbc.Driver”);//注册驱动

2.       String url = “jdbc:mysql://localhost:3306/mydb1”;

3.       String username = “root”;

4.       String password = “123”;

5.       Connection conn = DriverManager.getConnection(url, username,password);//获得连接

注意,上面代码可能出现的两种异常:

1.       ClassNotFoundException:这个异常是在第1句上出现的,出现这个异常有两个可能:

    1.你没有给出mysql的jar包;

    2.你把类名称打错了,查看类名是不是com.mysql.jdbc.Driver。

 

2.       SQLException:这个异常出现在第5句,出现这个异常就是三个参数的问题,往往username和password一般不是出错,所以需要认真查看url是否打错。

Connection

Connection最为重要的方法就是获取Statement:

stmt=conn.CreateStatement();
resultSet rs=stmt.executeQuery(sql);
上面是statement的用法

============================
下面是PrepareStatement的用法
ptmt=conn.PreparedStatement(sql);
resultSet rs=ptmt.executeQuery();

Statement

Statement最为重要的方法是:

 int executeUpdate(String sql):执行更新操作,即执行insert、update、delete语句,其实这个方法也可以执行createtable、alter table,以及drop table等语句,但我们很少会使用JDBC来执行这些语句;

ResultSet executeQuery(String sql):执行查询操作,执行查询操作会返回ResultSet,即结果集。

boolean execute()

Statement还有一个boolean execute()方法,这个方法可以用来执行增、删、改、查所有SQL语句。该方法返回的是boolean类型,表示SQL语句是否有结果集!。

如果使用execute()方法执行的是更新语句,那么还要调用int getUpdateCount()来获取insert、update、delete语句所影响的行数。

如果使用execute()方法执行的是查询语句,那么还要调用ResultSet getResultSet()来获取select语句的查询结果。

PreparedStatement

数据库的操作过程中,PreparedStatement 对象是一个很不起眼但是记为重要的接口对象,它继承 于Statement,并与之在两方面有所不同:

1)PreparedStatement 实例包含已编译的 SQL 语句。这就是使语句“准备好”。包含于 PreparedStatement 对象中的 SQL 语句可具有一个或多个 IN 参数。IN参数的值在 SQL 语句创建时未被指定。相反的,该语句为每个 IN 参数保留一个问号(“?”)作为占位符。每个问号的值必须在该语句执行之前,通过适当的setXXX 方法来提供。

2)由于 PreparedStatement 对象已预编译过,所以其执行速度要快于 Statement 对象。因此,多次执行的 SQL 语句经常创建为 PreparedStatement 对象,以提高效率。

作为 Statement 的子类,PreparedStatement 继承了 Statement 的所有功能。同时,三种方法 execute、 executeQuery 和 executeUpdate 已被更改以使之不再需要参数。这些方法的 Statement 形式(接受 SQL 语句参数的形式)不应该用于 PreparedStatement 对象。

【PreparedStatement的setObject的作用和setString的作用是一样的!】

setObject的第二个参数是Object类型,但是内部会通过instance of判断这个参数到底是哪个类型的具体对象,从而调用相应类型的set方法。

3)setXXX 方法中的 XXX 是 Java 类型。它是一种隐含的 JDBC 类型(一般 SQL 类型),因为驱动程序将把 Java 类型映射为相应的 JDBC 类型(遵循该 JDBCGuide中§8.6.2 “映射 Java 和 JDBC 类型”表中所指定的映射),并将该 JDBC 类型发送给数据库。例如,以下代码段将 PreparedStatement 对象 pstmt 的第二个参数设置为 44,Java 类型为 short:

  pstmt.setShort(2, 44);

  驱动程序将 44 作为 JDBC SMALLINT 发送给数据库,它是 Java short 类型的标准映射。

  程序员的责任是确保将每个 IN 参数的 Java 类型映射为与数据库所需的 JDBC 数据类型兼容的 JDBC 类型。不妨考虑数据库需要 JDBC SMALLINT 的情况。如果使用方法 setByte ,则驱动程序将 JDBC TINYINT 发送给数据库。这是可行的,因为许多数据库可从一种相关的类型转换为另一种类型,并且通常 TINYINT 可用于SMALLINT 适用的任何地方。

4) setObject(i+1,arg[i])用法与setInt(i+1,arg[i]),setString(i+1,arg[i])用法类似,

但不需指定参数类型,可以通用;

其中,第一个是指你SQL语句中的第几个参数,第二个是要设置的值

举个例子:SQL语句如下,

String sql="Select * From tableName Where id=? And Name=?";

pstmt.setInt(1,100)//就表示此处id=100

pstmt.setString(2,"abc")//表示此处Name="abc"

ResultSet之获取列数据

可以通过next()方法使ResultSet的游标向下移动,当游标移动到你需要的行时,就需要来获取该行的数据了,ResultSet提供了一系列的获取列数据的方法:

l  String getString(int columnIndex):获取指定列的String类型数据;

l  int getInt(int columnIndex):获取指定列的int类型数据;

l  double getDouble(int columnIndex):获取指定列的double类型数据;

l  boolean getBoolean(int columnIndex):获取指定列的boolean类型数据;

l  Object getObject(int columnIndex):获取指定列的Object类型的数据。

 

上面方法中,参数columnIndex表示列的索引,列索引从1开始,而不是0,这第一点与数组不同。如果你清楚当前列的数据类型,那么可以使用getInt()之类的方法来获取,如果你不清楚列的类型,那么你应该使用getObject()方法来获取。

ResultSet还提供了一套通过列名称来获取列数据的方法:

l  String getString(String columnName):获取名称为columnName的列的String数据;

l  int getInt(String columnName):获取名称为columnName的列的int数据;

l  double getDouble(String columnName):获取名称为columnName的列的double数据;

l  boolean getBoolean(String columnName):获取名称为columnName的列的boolean数据;

Object getObject(String columnName):获取名称为columnName的列的Object数据;

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM