黑马程序员技术交流社区

标题: 写一个用 jdbc 连接并访问 oracle 数据的程序代码 [打印本页]

作者: 刘云龙    时间: 2012-7-21 00:00
标题: 写一个用 jdbc 连接并访问 oracle 数据的程序代码
写一个用 jdbc 连接并访问 oracle 数据的程序代码



作者: 陈欢    时间: 2012-7-21 00:05
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
       Connection     con=java.sql.DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:oracle9","admin","admin");////其中oracle9为SID
       Statement stmt=con.createStatement();
        ResultSet rst=stmt.executeQuery("select * from book");
        while(rst.next())
        {
             //输出代码         

        }
        //关闭连接
        rst.close();
        stmt.close();
        con.close();
作者: 常佳杰    时间: 2012-7-21 00:06
Class.forName("oracl.jdbc.driver.OracleDriver");//注册驱动
String url ="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
DriverManager.getConnection(url,"scott","tiger");//连接访问

作者: 常佳杰    时间: 2012-7-21 00:08
  1. Class.forName("oracl.jdbc.driver.OracleDriver");//注册驱动
  2. String url ="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
  3. DriverManager.getConnection(url,"scott","tiger");//连接访问
复制代码

作者: 弑血    时间: 2012-7-21 00:26
(1)装载并注册数据库的JDBC驱动程序      

载入JDBC驱动:  

Class.forName("oracle.jdbc.driver.OracleDriver");  

注册JDBC驱动:  

java.sql.DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());  

(2)建立与数据库的连接  

要建立与数据库的连接,首先要创建指定数据库的URL。连接数据库的URL对象,利用DriverManager 的getConnection方法建立的。数据库URL对象与网络资源的统一资源定位类似,其构成格式如下:   

jdbc:subProtocol:subName://hostname:port;DatabaseName=ⅹⅹⅹ  

其中:   

jdbc表示当前通过Java的数据库连接进行数据库访问;   

subProtocol表示通过某种驱动程序支持的数据库连接机制;  

subName表示在当前连接机制下的具体名称;   

hostname表示主机名;  

port表示相应的连接端口;  

DatabaseName表示要连接的数据库的名称。  

这里以与Oracle数据库的连接为例:  

连接Oracle 8/8i/9i数据库(用thin模式)   

url = jdbc:oracle:thin:@hostip:1521:oracleSID;  

注意:hostip指主机的ip地址,oracleSID指数据库的SID。  

再者确定连接数据库的用户名与密码,即user和password 的值:  

user = “ⅹⅹⅹ “;  

password = “ⅹⅹⅹ“;  

最后使用如下语句:  

Connection con=java.sql.DriverManager.getConnection(url,user,password);   

(3)创建Statement对象  

例如:  Statement stmt = con.createStatement();  

(4)调用并执行SQL语句  

例如:  

String sql = “select a,b,c  from table1";//table1为你所要查询的表名,a,b,c为所要查询的字段  

ResultSet rs = stmt.executeQuery(sql);  

(5)访问ResultSet中的记录集并从中取出记录  

例如:   

rs.next( );  

rs.absolute(4);  

String col1=rs.getString(1);  

……..  

(6)依次关闭ResultSet、Statement和Connection对象  

例如:  

rs.close();  

stmt.close();  

con.close();


代码如下   
        package test;
import java.sql.*;

public class SqlTest {
public static void main(String[] args) throws SQLException,Exception {


  String quryString="select * from address";
  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  String url="jdbc:odbc:myAddress";
  String user="Wasingmon";
  String password="123456";
  Connection conn=DriverManager.getConnection(url,user,password);
  Statement stmt=conn.createStatement();
  ResultSet rs=stmt.executeQuery(quryString);
  while(rs.next()){
   System.out.print(rs.getString(1));
  }
  rs.close();
  stmt.close();
  conn.close();

}

}

程序中Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");是显式加载驱动程序;其他部分对照上面讲解应该很容易理解的。


         
作者: 张世威    时间: 2012-7-21 00:28
本帖最后由 张世威 于 2012-7-21 00:36 编辑

1加载驱动(根据不同的数据库,给DriverManager添加不同的驱动)
2连接DB,创建连接对象,(注意你的oracle数据库的主机+端口+用户名+密码)
3执行SQL
4获得结果集,处理结果集
5关闭连接

  1. import java.sql.*;

  2. public class TestJDBC {

  3.         public static void main(String[] args) {
  4.                 ResultSet rs = null;
  5.                 Statement stmt = null;
  6.                 Connection conn = null;
  7.                 try {
  8.                         Class.forName("oracle.jdbc.driver.OracleDriver");
  9.                        
  10.                         conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.1:1521:SXT", "scott", "tiger");
  11.                         stmt = conn.createStatement();
  12.                         rs = stmt.executeQuery("select * from dept");
  13.                         while(rs.next()) {
  14.                                 System.out.println(rs.getString("deptno"));
  15.                                 System.out.println(rs.getInt("deptno"));
  16.                         }
  17.                 } catch (ClassNotFoundException e) {
  18.                         e.printStackTrace();
  19.                 } catch (SQLException e) {
  20.                         e.printStackTrace();
  21.                 } finally {
  22.                         try {
  23.                                 if(rs != null) {
  24.                                         rs.close();
  25.                                         rs = null;
  26.                                 }
  27.                                 if(stmt != null) {
  28.                                         stmt.close();
  29.                                         stmt = null;
  30.                                 }
  31.                                 if(conn != null) {
  32.                                         conn.close();
  33.                                         conn = null;
  34.                                 }
  35.                         } catch (SQLException e) {
  36.                                 e.printStackTrace();
  37.                         }
  38.                 }
  39.         }

  40. }
复制代码

作者: 柳雷    时间: 2012-7-21 00:57
Class.forName("oracl.jdbc.driver.OracleDriver");//注册驱动
String url ="jdbcracle:thin127.0.0.1:1521rcl";
DriverManager.getConnection(url,"scott","tiger");//连接访问
作者: 乐峰    时间: 2012-7-21 11:41
package com.my.dao;
import java.sql.*;

public class Basedao {
        private static final String DRIVER="oracle.jdbc.driver.OracleDriver";
        private static final String URL="jdbc:oracle:thin:@localhost:1521:orcl";
        public static Connection getconn(){
                Connection conn=null;
                                String username="sa";
                                String password="sa";
                try {
                        Class.forName(DRIVER);
                        conn=DriverManager.getConnection(URL,"sa","sa");
                } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                return conn;
        }
        public static void findall(Connection conn,PreparedStatement stmt,ResultSet rs){
                if(rs!=null){
                        try {
                                rs.close();
                        } catch (SQLException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                }
                if(stmt!=null){
                        try {
                                stmt.close();
                        } catch (SQLException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                }
                if(conn!=null){
                        try {
                                conn.close();
                        } catch (SQLException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                }
        }
}

作者: 李菁    时间: 2012-7-21 13:11
package com.my.dao;
import java.sql.*;

public class Basedao {
        private static final String DRIVER="oracle.jdbc.driver.OracleDriver";
        private statci final String URL="jdbc:oracle:thin:@localhost:1521:数据库名";
        public static Connection getconn(){
                Connection conn=null;
                try {
                        Class.forName(DRIVER);
                        conn=DriverManager.getConnection(URL,"用户名","密码");
                } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                return conn;
        }
作者: 谭威    时间: 2012-7-21 17:20
张世威 发表于 2012-7-21 00:28
1加载驱动(根据不同的数据库,给DriverManager添加不同的驱动)
2连接DB,创建连接对象,(注意你的oracle数 ...

关闭连接有问题  如果关闭ResultSet和Statement出现异常的话。conn不能关掉。

        if(rst!=null){
                        try {
                                conn.close();
                        } catch (SQLException e) {
                                e.printStackTrace();
                        }finally{
                                if(st!=null){
                                        try {
                                                st.close();
                                        } catch (SQLException e) {
                                                e.printStackTrace();
                                        }finally{
                                                if(conn!=null){
                                                        try {
                                                                conn.close();
                                                        } catch (SQLException e) {
                                                                e.printStackTrace();
                                                        }
                                                }
                                        }
                                }
                        }
作者: 张世威    时间: 2012-7-21 17:25
谭威 发表于 2012-7-21 17:20
关闭连接有问题  如果关闭ResultSet和Statement出现异常的话。conn不能关掉。

        if(rst!=null){

嗯,是的,应该把几个变量分开来try-catch,谢谢了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2