接口Connection中createStatement()方法返回一个Statement对象,
而接口Statement中executeQuery()等方法发送SQL语句后返回一个ResultSet对象,我想请问一下,Statement和ResultSet不是接口吗,接口怎么会有对象呢?
那些接口中的方法好像是抽象的,怎么能用呢?不是很理解,希望懂的人能教我一下!先谢谢了!
而接口Statement中executeQuery()等方法发送SQL语句后返回一个ResultSet对象,我想请问一下,Statement和ResultSet不是接口吗,接口怎么会有对象呢?
那些接口中的方法好像是抽象的,怎么能用呢?不是很理解,希望懂的人能教我一下!先谢谢了!
解决方案 »
- 紧急! 散分了! 用iText怎样将已生成好的word文档复制到另外一个文件夹中
- java 如何判断某一字符是否存在在指定的字符串中
- 多线程编程,实现机器人手臂和腿部运动模拟,急
- eclipse连接sql2005的问题
- JFrame中怎么样动态创建组件?
- 存储过程调用小问题~望指教?
- algorithm(java语言实现的) 第四版 我运行错误 求大侠指点
- 請問JB6的注冊碼!
- 请问如何解决jbuilder4.0中的could not create JVM问题?
- 数学问题:什么是位与,位或,>>和>>>
- java程序中调用openssl 的shell命令,无法得到openssl的输出,望高手指教~~
- 小弟恳求一个J2EE1.4 中文API 有的哥哥姐姐给我发一份!
刚好没事,我来多唠叨几句。
实际情况是这样的,当sun决定开发jdbc时,他们发现这个一个问题,他们面对着很多数据库,每个数据库对于数据的操作可能不同。因此,他们没有把java.sql这个包写成具体的操作类。而是定义了很多接口,然后他们告诉各个数据库厂商,要想人们在java程序里连接他们的数据库就必须实现他们定义的这些接口。所以当你要连接数据库时,第一步一定是类似Class.forName("oracle.jdbc.driver.OracleDriver");这样的语句,这句话其实很关键,因为这句话告诉了DriverManager它要连接的Driver是谁,它可以通过你告诉它的信息,去找到数据库厂商提供的具体的实现了Connection 、 Statement 、ResultSet等的具体类,这样当你写了
Statement stmt = conn.createStatement();这样的语句的时候,返回的其实是实现了Statement接口的由具体数据库厂商提供的实现类。而你只是利用Statement 来引用它而已。这样的好处很多,最直接就是,你不需要知道oracle,或者mysql他们实现Statement 接口的类具体名字是什么,你就可以使用他们。否则oracle出个StatementForOracle,mysql出个StatementForMysql,而你每次实例化Statement 时都给先看看自己用的谁的数据库,然后查查它的Statement类具体叫什么,就会很麻烦。
罗嗦了一堆,希望有帮助,其实就是一个概念“接口回调”