??xml version="1.0" encoding="utf-8" standalone="yes"?>伊人网在线播放,日日噜噜夜夜狠狠视频欧美人,伊人久久大香线蕉午夜av http://www.aygfsteel.com/DuYang/category/10759.html拼搏在繁华的都市zh-cnTue, 27 Feb 2007 16:17:24 GMTTue, 27 Feb 2007 16:17:24 GMT60Database Acessing:JDBChttp://www.aygfsteel.com/DuYang/articles/44581.htmlDalston.YoungDalston.YoungFri, 05 May 2006 00:03:00 GMThttp://www.aygfsteel.com/DuYang/articles/44581.htmlhttp://www.aygfsteel.com/DuYang/comments/44581.htmlhttp://www.aygfsteel.com/DuYang/articles/44581.html#Feedback0http://www.aygfsteel.com/DuYang/comments/commentRss/44581.htmlhttp://www.aygfsteel.com/DuYang/services/trackbacks/44581.htmlDataBase Accessing:JDBC
      把以前学习的东西写出来,以便在以后的学习和工作中可以用到Q这里我主要是把自己关于数据库学习的一些东西给写出来?br />      JDBC提供一套访问关pL据库的标准库。通过JDBC APIQ我们可以用完全相同的Java语法讉K各式各样的SQL数据库。正式来JDBC不是一个首字母的羃写词Q因此,它不代表M事情。”Java Database Connectivity”通常是该名称的完整Ş式?br />通常查询数据库可以用7个标准步骤来说明Q?br />(1).载入JDBC驱动E序
如果要蝲入驱动程序,只需要在Class.forNameҎ中指定数据库驱动cd。这样做p动创建驱动程序的实例Qƈ注册到JDBC驱动E序理器??ForNameҎq回l定名称的类的对象,调用该对象相当于调用Class.forName)
(2)定义q接URL(connection URL)
在JDBC中,q接URL指定服务器的L名,端口以及希望与之建立q接的数据库?br />(3)建立q接
有了q接URLQ用户名和密码,可以徏立到数据库的|络q接。连接徏立之后,可以执行数据库的查询,直到q接为止
(4)创徏Statement对象
创徏Statement才能向数据库发送查询和命o
(5)执行查询或更?/font>
有了Statement对象后,可以用execute,executeQuery,executeUpdate或executeBatchҎ发送SQL语句到数据库
(6)l果处理
数据库执行查询完毕之后,q回一个ResultSet。ResultSet表示一pd的行和列Q可以调用next和各UgetXXXҎ对这些行和列q行处理?br />(7)关闭q接
q点比较重要Q一定要记得关闭q接Q释放与数据库的资源。这样可以提高效率?

装蝲JDBC驱动E序
因ؓ在装载JDBC驱动E序用的是显C的Class.forName所以一定要写在try{}catch{}块中。由于可能会发生ClassNotFoundException所以应当捕莯个异? Example:
Try
{
Class.forName(“connect.microsoft.MicrosoftDriver?;
Class.forName(“oracle.jdbc.driver.OracleDriver?;
Class.forName(“com.sybase.jdbc.SybDriver?;
}
Catch(ClassNotFoundException e)
{
 out.println(e.getMessage());
}
我们在部|的时候应当注意是把JDBC的驱动程序JAR文g部v到install_dir/common/lib也可以部|到WEB-INF/lib目录中?br />建立q接
在徏立实际连接的时候,需要将URLQ数据库名字和用户名都传lDriverManagercȝgetConnectionҎQ由于getConnection有可能会产生异常因此我们应该把这些代码写在try{}catch{}? Eg:
String URL=”jdbc:oracle:thin:@?host+??port+??dbName;
String UID=”Database user name?
String PWD=”Database password?
Try
{
Conection con=DriverManager.getConnection(URL,UID,PWD);
}
Catch(SQLException e)
{
  e.getMessage();
}
Conectionc还包括其他的一些用法!如下Q?br />prepareStatement
创徏预编译查询,提交l数据库
prepareCall
讉K数据库中的存储过E?br />Rollbach/commit
控制事务理
Close
关闭q接
isClosed
定q接是否时或被昄关闭
建立q接q程Q一个可选部分是使用getDataMetaҎ查找数据库的相关信息Q这个方法返回DatabaseMetaData对象Q该对象拥有相应的方法,可以得出数据库自w的名称和版?getDatabaseProductName,getDatabaseProductVersion),或?JDBC驱动E序的名U和版本(getDriverName,getDrvierVersion).例如Q?br />DatabaseMetaData dbMetaData=connection.getDataMeta();
String productName=
dbMetaDate.getDatabaseProductName();
System.out.println(“Database:?productName);
String produtcVersion=
   dbMetaDate.getDatabseProductVersion();
System.out.println(“Version:?productVersion);
创徏Statement对象
Statement对象用来向数据库发送查询和命o。它由Conection的createStatement()Ҏ创徏:
Statement stmt=connection.createStatement();
执行查询或更?br />有了Statement对象后,可以用它的executeQueryҎ发送SQL查询QexecuteQueryq回ResultSetcd对象。Eg:
String sql=”select * from emp?
ResultSet rs=stmt.execute Query(sql);
Statement的其他的用法:
executeQuery
执行SQL查询q在ResultSet中返回数?ResultSet可能为空Q但不会为NULL?br />executeUpdate
用于UPDATEQINSERT或DELETE命o。返回受影响的行敎ͼ可以?Q它q提供对DDL(Data Definition Language)命o的支?例如CREATE TABLEQDROP TABLE和ALTER TABLE?br />executeBatch
一l命令作Z个单元执行,q回一个数l,其中存储每个计数的更新计数。addBatch可以向批量执行的命o中添加命令?br />setQueryTimeout
指定驱动E序在抛出SQLException异常之前Q等待处理结果的旉?br />getMaxRows/setMaxRows
定ResultSet可容U的最大行数。超q的行将会在不给ZQ何警告的情况下丢弃。默认gؓ0Q表C没有限制?br />l果处理
l果处理最单的方式是用ResultSet的NextҎ在表中移动,每次一行??ResultSet中行的第一列烦引ؓ1Q而非0).在访?ResultSet的列时不要用烦引,而用列名。用这U方式在表的l构发生改变Ӟ与ResultSet交互的代码不Ҏ出错误?br />ResultSet的一些方法集:
Next/previous
ResultSet中的游标分别UdC一行?br />Relative/absolute
RelativeҎ游标相应的地移动特定数目行Q或正或负(向前或向后)。AbsoluteҎ游标移动到指定的行受如果绝对值是负数Q那么游标将相对于ResultSet的结进行定?JDBC2.0)?br />getXxx
q回Xxx JavacdQ参见java.sql.TypesQ的?q个值来自于列名或烦引指定的列。如果列的gؓSQL的NULL|那么则返?或NULL?br />wasNull
查上面的getXxxd的是否ؓSQL的NULL倹{如果列的类型ؓ基本cd(int,float{?,且数据库中的gؓ0Q那么这Ҏ查就很重要。由于数据库的NULLq回0Q所?和数据库的NULL不能区分开来。如果列的类型ؓ对象(String,Date{?Q可以简单的返回gNULL比较?br />findColumn
q回ResultSet中与指定列名对应的烦引?br />getRow
q回当前的行PW一行从1开始?br />getMetaData
q回描述ResultSet的ResultSetMetaData对象。ResultSetMetaDatal出列的数目和名U?br />getMetaDataҎؓ有用。仅仅有ResultSet的情况下我们必须知道列的名称Q数目和cd才能正确的对表进行处理。ResultSetMetaData的方法集Q?br />getColumnCount
q回ResultSet中列的数目?br />getColumnName
q回列在数据库中的名U?
getColumnType
q回列的SQLcdQ对应于java.sql.Types中的V?br />isReadOnly
表示数据是否为只诅R?br />isSerachable
表明l列是否可以用在WHERE字句中?br />isNullable
表明该列是否可以存储NULL?br />(注J: ResultSet和ResultSetMetaData没有直接提供Ҏq回查询所q回的行敎ͼ然而,在JDBC2.0中,可以用last游标定位于ResultSet最后一行,然后调用getRow获取当前的行受?
关闭q接
昄的关闭连?
connection.close();

可以参考以下以下的例子:

import java.sql.*;
import java.io.*;
/**
 * <p>Title: JDBCq接数据?lt;/p>
 * <p>Description: 本实例演C如何用JDBCq接Oracle数据库,q演C添加数据和查询数据?lt;/p>
 */publicclass JDBCConn{private  String url="";//数据库连接字W串private  String username="";//数据库用户名private  String password="";//数据库密?/font>
 
/**
 *<br>Ҏ说明Q获得数据连?
 *<br>输入参数Q?
 *<br>q回cdQConnection q接对象
 */public Connection conn(){try{
       //W一步:加蝲JDBC驱动
        Class.forName("oracle.jdbc.driver.OracleDriver");
        //W二步:创徏数据库连?/font>
        Connection con =DriverManager.getConnection(url, username, password);
        return con;
    }catch(ClassNotFoundException cnf){
      System.out.println("driver not find:"+cnf);
      returnnull;
    }catch(SQLException sqle){
      System.out.println("can't connection db:"+sqle);
      returnnull;
    }
  catch (Exception e) {
        System.out.println("Failed to load JDBC/ODBC driver.");
        returnnull;
     }}/**
 *<br>Ҏ说明Q执行查询SQL语句
 *<br>输入参数QConnection con 数据库连?
 *<br>输入参数QString sql 要执行的SQL语句
 *<br>q回cdQvoid
 */publicvoid query(Connection con, String sql){try{if(con==null){thrownew Exception("database connection can't use!");
     }if(sql==null) thrownew Exception("check your parameter: 'sql'! don't input null!");
   //W三步:获取Staetment对象
     Statement stmt = con.createStatement();
   //W四步:执行数据库操作(查询操作Q?/font>
     ResultSet rs = stmt.executeQuery(sql);
   //W五步:处理l果?/font>
   ResultSetMetaData rmeta = rs.getMetaData();
      //获得数据字段个数int numColumns = rmeta.getColumnCount();
     while(rs.next())
   {
     for(int i = 0;i< numColumns;i++)
     {
    String sTemp = rs.getString(i+1);
    System.out.print(sTemp+"  ");
     }
    System.out.println("");
   }}catch(Exception e){
      System.out.println("query error:"+e);
    }}/**
 *<br>Ҏ说明Q执行插入、更新、删除等没有q回l果集的SQL语句
 *<br>输入参数QConnection con 数据库连?
 *<br>输入参数QString sql 要执行的SQL语句
 *<br>q回cdQvoid
 */publicvoid execute(Connection con, String sql){try{if(con==null) return;
    //W三步:获取Statement对象
    Statement stmt = con.createStatement();
    //W四步:执行数据库操作(更新操作Q?/font>
    stmt.executeUpdate(sql);
    System.out.println("update executed successly");
    }catch(Exception e){
      System.out.println("execute error: sql = "+sql);
      System.out.println(e);
    }//end try catch}//end execute/**
 *<br>Ҏ说明Q实例演C?
 *<br>输入参数Q无
 *<br>q回cdQvoid
 */publicvoid demo(){
    String sSQL="";
    BufferedReader stdin=new BufferedReader(new  InputStreamReader(System.in));
    try{
      System.out.println("please input update SQL string");
      sSQL=stdin.readLine();//获取命o行输入(更新字符Ԍ
      Connection conn = conn();//执行自定义连接方法(获取数据库连接对象)
      execute(conn,sSQL);//执行自定义更新方?/font>
      String sql = "select * from TBL_USER";
      query(conn,sql);//执行自定义查询方法(查询q处理结果集Q?/font>//W六步:关闭数据库连?/font>
      conn.close();
    }catch(SQLException se){
      System.out.println(se);
    }catch(Exception e){
      System.out.println(e);
    }
 
  }/**
 *<br>Ҏ说明Q主Ҏ
 *<br>输入参数QString[] args 命o行参敎ͼ包括Q数据库q接URLQ?
 *<br>用户名,密码Q?
 *<br>q回cdQvoid
 */publicstaticvoid main(String[] arg){if(arg.length!=3){
      System.out.println("use: java JDBCConn url username password");
      return;
    }
    JDBCConn oc = new JDBCConn();
    oc.url = arg[0];
    oc.username=arg[1];
    oc.password=arg[2];
    oc.demo();
  }}


Dalston.Young 2006-05-05 08:03 发表评论
]]>
数据源和q接?/title><link>http://www.aygfsteel.com/DuYang/articles/44580.html</link><dc:creator>Dalston.Young</dc:creator><author>Dalston.Young</author><pubDate>Fri, 05 May 2006 00:02:00 GMT</pubDate><guid>http://www.aygfsteel.com/DuYang/articles/44580.html</guid><wfw:comment>http://www.aygfsteel.com/DuYang/comments/44580.html</wfw:comment><comments>http://www.aygfsteel.com/DuYang/articles/44580.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/DuYang/comments/commentRss/44580.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/DuYang/services/trackbacks/44580.html</trackback:ping><description><![CDATA[ <p>数据库连接池的解x案是在应用程序启动时建立_的数据库q接Qƈ这些连接组成一个连接池Q由应用E序动态的Ҏ中的q接q行甌Q用和释放?/p> <p>  JDBC 3.0规范中提供了一个支持数据库q接池的框架Q这个框架仅仅规定了如何支持q接池的实现Q而连接池的具体实现JDBC 3.0规范q没有做相关的规定?/p> <p>  JDBC 3.0规范定义了如下的cd接口来支持数据库q接池的实现?/p> <p> ?javax.sql.ConnectionEvent: q接事g</p> <p> ?javax.sql.ConnectionPoolDataSource: q接池数据源</p> <p>?javax.sql.PooledConnection: 被池化的q接</p> <p>●javax.sql.ConnectionEventListener: q接事g监听接口</p> <p>   DataSource接口代表了数据源Q它一般由数据库驱动厂商实现。通过q个接口来获得一个连接,它的主要Ҏ如下:</p> <p> ?getConnection(): 获得一个Connection物g</p> <p>?getConnection(String username,String password): 获得一个Connection物g</p> <p>★getLongWriter(): 从DataSource获得Long Writer对象Q它是Print Writer的实?/p> <p>★setLogWriter(PrintWriter out):讄DataSource的LogWriter</p> <p>★setLoginTime():获得DataSource试q接数据库的最大时?/p> <p>★setLoginTimeout(int seconds): 讄DataSource试q接数据的最大时?/p> <p>如下是在Tomcat 5中配|数据源:</p> <p>   在Tomcat?Tomcat_Home%/conf/server.xml里的</Context></Host>前增加如下的描述:</p> <p><Context path="/MyRoot" docBase="MyRoot" debug="0"<br />                reloadable="true" crossContext="true"><br />                <Resource name="jdbc/bn" auth="Container" type="javax.sql.DataSource"/><br />                <ResourceParams name="jdbc/bn"><br />                <parameter> <br />                   <name>factory</name><br />                   <value>org.apache.commons.dbcp.BasicDataSourceFactory</value><br />                </parameter><br />                <parameter><br />                   <name>username</name><br />                   <value>bn</value><br />                </parameter><br />                <parameter><br />                   <name>password</name><br />                   <value>bn</value><br />                </parameter><br />                <parameter><br />                   <name>maxActive</name><br />                   <value>20</value><br />                </parameter><br />                <parameter><br />                   <name>maxIdle</name><br />                   <value>10</value><br />                </parameter><br />                <parameter><br />                   <name>maxWait</name><br />                   <value>-1</value><br />                </parameter><br />                </ResourceParams><br /></Context></p> <img src ="http://www.aygfsteel.com/DuYang/aggbug/44580.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/DuYang/" target="_blank">Dalston.Young</a> 2006-05-05 08:02 <a href="http://www.aygfsteel.com/DuYang/articles/44580.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">˳</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ְ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ϫ</a>| <a href="http://" target="_blank">Ϫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ѱ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ֱ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">֦</a>| <a href="http://" target="_blank">׸</a>| <a href="http://" target="_blank">Ͷ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̩</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ȳ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ԭ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">֬</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">º</a>| <a href="http://" target="_blank">ƽ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>