//1.注册jdbc驱动 方法有两个:-------------------------------------------------------------
以下是引用片段: import java.lang.Class; //方法一 Class.forName("oracle.jdbc.OracleDriver"); //事实上不用引入 import java.sql.DriverManager; //方法二: DriverManager.registerDriver(new Oracle.jdbc.OracleDriver()); |
//2.打开数据库连接,方法两个:-------------------------------------------------------------
以下是引用片段: DriverManager.getConnection(URL,username,password); //方法一: //例子: Connection myConnection=DriverManager.getConnection( "jdbc:oracle:thin@localhost:1521:myoracle", "name", "password"); import Oracle.jdbc.pool.OracleDataSource; //方法二:使用数据源 OracleDataSource myDataSource=new OracleDataSource(); //创建数据源 myDataSource.setServerName("localhost"); myDataSource.setDatabaseName("myOracle"); myDataSource.setDriverType("oci"); myDataSource.setNetworkProtocol("tcp"); //设置属性 myDataSource.setPortNumber(1521); myDataSource.setUser("name"); myDataSource.setPassword("password"); | //连接数据库,可以重新指定用户名和密码,以不同的身份连接查询;
以下是引用片段: Connection myConnection=myDataSource.getConnection("username","password"); |
//3.创建jdbc Statement对象------------------------------------------------------------------------- //可以禁止自动提交 myConnection.setAutoCommit(false); Statement myStatement=myConnection.createStatement(); //4.从数据库取得信息,即使用statement对象
以下是引用片段: ResultSet myResultSet=myStatement.executeQuery( "select userid,username from table"); //取得所有的信息 String result=myResultSet.getString("userid"); //取得某项信息 if(myResultSet.wasNull()){ }; ResultSet.next(); myResultSet.close(); //关闭 //在这里提交 myConnection.commit(); | //5.关闭jdbc对象-------------------------------------------------------------------------------
以下是引用片段: myStatement.close(); myConnection.close(); /*一般采用如下格式: finally{ if(myStatement!=null){ myStatement.close();} if(myConnection!=null{ myConnection.close();} } */ | //6.使用jdbc preparedStatement对象----------------------------------------------------- PreparedStatement myPrepStatement=myConnection.preparedStatement( "insert into products"+ "(id,type_id,name) values ("+ "?,?,?" ")" // ); myPrepStatement.setInt(1,100); myPrepStatement.setInt(2,1100); myPrepStatement.setString(3,"username"); //使用set方法 myPrepStatement.excute(); //提交 /*二,使用连接缓存和连接池来连接数据库 可以通过建立一个连接缓存,必要时向连接缓冲池添加连接。 */ //首先讨论连接缓冲池------------------------------------------------------------------------ import javax.sql.*; import oracle.jdbc.pool.*; OracleConnectionPoolDataSource myOracle=mew OracleConnectionPoolDataSource(); //创建连接缓冲池数据源oracleConnectionPoolDataSource的对象 //实现了ConnectionPoolDataSource接口 //2.使用此对象设置物理数据库连接的属性
以下是引用片段: myOracle.setServerName("localhost"); myOracle.setDatabaseName("myOracle"); myOracle.setPortNumber(1521); myOracle.serDriverTupe("thin"); myOracle.setUser("user"); myOracle.setPassword("password"); | //3.创建缓冲的连接对象,它代表物理数据库连接,可以使用它来请求数据库连接实例 PooledConnection myPooledConnection= myOracle.getPooledConnection(); //PooledConnection myPooledConnection= myOracle.getPooledConnection("user","password"); //建立一次连接,可以多次请求连接实例,最后再关闭连接对象 //4.请求、使用、和最终关闭连接实例 Connection myConnection=myPooledConnection.getConnection(); //使用 myconnection.close(); //5.程序结束之前,关闭PooledConnection对象 myPooledConnection.close(); /* 使用连接缓存--------------------------------------------------------------------------- */ /*1.创建OracleConnectionCacheImpl的对象,他实现了OracleConnectionCacheClass接口 这个接口扩展了OracleDataSource类,可以使用这个类的所有属性和方法 创建的最简单的方法是使用默认的构造器*/ OracleConnectionCacheImpl myOCCI=new OracleConnectionCacheImpl(); myOCCI.setServerName("localhost"); myOCCI.setDatabaseName("myOracle"); myOCCI.setPortNumber(1521); myOCCI.setDriverType("thin"); myOCCI.setUser("name"); myOCCI.setPassword("password"); //还可以使用现有的OraclePoolDataSource对象为它设置属性 //OracleConnectionCacheImpl myOCCI=new OracleConnectionCacheImpl(myOracle); //或使用如下方法 //myOCCI.setConnectionPoolDataSource(myOracle); //2.请求、使用和关闭连接实例 Connection myConnection=myOCCI.getConnection(); /*PooledConnection对象代表物理数据库连接,默认情况下,调用myOCCI.getConnection()方法时, myocci检查缓存中是否存在Pooledconnection对象,没有就创建一个 然后,检查pooledconnection对象是否有空闲的连接实例,没有就创建 并返回PooledConnection对象的连接实例 */ //在这里可以请求另一个连接实例 //Connection myConnection2=myOCCI.getConnection(); //关闭连接实例 myConnection.close(); //程序结束前,应该关闭OracleConnectionCacheImpl对象,同时也就关闭了所有PooledConnection对象 myOCCI.close(); /*使用OCI驱动程序实现连接缓冲池--------------------------------------------------------------- 优点:可以动态配置物理连接数量 每个连接实例可以可以有不同的用户名密码,可以使用一个缓冲池访问不同的用户模式 能够有多个缓冲连接,THIN只有一个数据库连接 */ OracleOCIConnectionPool myOOCP=new OracleOCIConnectionPool(); /* myOOCP.set…… …… …… */ //以下可选的可以程序运行时动态设定的属性 /*
以下是引用片段: Properties myProperties=new Properties(); myProperties.put(OracleOCIConnectionPool.CONNPOOL_MIN_LIMIT,"5"); my …… .CONNPOOL_MAX_LIMIT,"10"); …………… _INCREMENT,"2"); _TIMEOUT,"30"); _NOWAIT,"true"); myOOCP.setPoolconfig(myProperties); */ //建立连接实例 OracleOCIConnection myConnection=(OracleOCIConnection)myOOCP.getConnection(); myConnection.close(); myOOCP.close(); | |