亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

數據源在jdbc中的應用(2)

2019-11-18 12:40:06
字體:
來源:轉載
供稿:網友

  下面具體介紹一下數據源和javax.sql.DataSource接口。在數據源中存儲了所有建立數據庫連接的信息。就象通過指定文件名你可以在文件系統中找到文件一樣,通過提供正確的數據源名稱,你可以找到相應的數據庫連接。javax.sql.DataSource接口定義了如 何實現數據源。在該接口中定義了九個屬性。表一列出了對這些屬性的描述。由于本文是以8i為例,在8i中沒有實現roleName屬性,所以在表中沒有對此屬性做描述。
  表一:數據源標準屬性
  屬性名稱
  屬性數據類型 描述
  databaseName String 數據庫名稱,即數據庫的SID。
  dataSourceName String 數據源接口實現類的名稱。
  description String 對數據源的描述。
  networkPRotocol String 和服務器通訊使用的網絡協議名。在8i中,該屬性只在使用OCI驅動程序時有效,缺省協議是TCP協議。
  passWord String 用戶登錄密碼。
  portNumber Int 數據庫服務器使用的端口,缺省值為1521。
  serverName String 數據庫服務器名稱。
  user String 用戶登錄名。
  在javax.sql.DataSource接口中定義了以下方法:
  * public synchronized void setDatabaseName(String dbname)
  * public synchronized String getDatabaseName()
  * public synchronized void setDataSourceName(String dsname)
  * public synchronized String getDataSourceName()
  * public synchronized void setDescription(String desc)
  * public synchronized String getDescription()
  * public synchronized void setNetworkProtocol(String np)
  * public synchronized String getNetworkProtocol()
  * public synchronized void setPassword(String pwd)
  * public synchronized void setPortNumber(int pn)
  * public synchronized int getPortNumber()
  * public synchronized void setServerName(String sn)
  * public synchronized String getServerName()
  * public synchronized void setUser(String user)
  * public synchronized String getUser()
  通過這些方法,程序員可以獲得建立連接需要的所有信息。需要注重的是,程序員不可以獲取登陸密碼,這就在一定程度上保證了安全性。需要注重的另一點是所有的方法都是synchronized方法,這是為了保證應用程序的線程安全(Thread-safe)。假如在調用 該方法時,即使數據源實例發生變化不會影響程序的正確運行。
  除了實現由SUN定義的屬性和方法外,8i還提供了自己的數據源屬性和方法。這些方法和 屬性是在Oracle.jdbc.pool.DataSource中實現的。 8i擴展數據源屬性如表二所示:
  表二:
  屬性名稱 屬性數據類型 描述
  driverType String 使用的 JDBC驅動程序的類型,包括oci8, thin和kprb
  url String 數據庫連接的URL。
  tnsEntry String TNS條目名稱
  在oracle.jdbc.pool.DataSource中除了實現javax.sql.DataSource接口中定義的方法外
  ,還實現了以下方法:
  * public synchronized void setDriverType(String dt)
  * public synchronized String getDriverType()
  * public synchronized void setURL(String url)
  * public synchronized String getURL()
  * public synchronized void setTNSEntryName(String tns)
  * public synchronized String getTNSEntryName()
  同時,DataSource還實現了java.io.Serializable和javax.naming.Referenceable接口 。
  獨立使用數據源實際應用中,你可以把DataSource注冊到JNDI,也可以單獨使用。下面先給出一個單獨 使用DataSource的例子:
  // 初始化數據源實例
  DataSource ods = new DataSource();
  ods.setDriverType("thin");
  ods.setServerName("Chicago");
  ods.setNetworkProtocol("tcp");
  ods.setDatabaseName("chidb");
  ods.setPortNumber(1521);
  ods.setUser("guest");
  ods.setPassword("guest");
  // 從數據源中獲取數據庫連接
  Connection conn = ods.getConnection();
  // 通過數據庫連接進行數據操作
     ………………
  使用DataSource時有幾點需要注重:
  假如使用的時服務器端內部驅動程序(server-side internal driver),driverType屬
  性會被設置為kprb,其它所有屬性失效。
  假如使用Thin或OCI驅動程序:
  URL中可以包括用戶登錄名和用戶登錄密碼。例如:
  jdbcracle:thin:guest/guest@Chicago:1521:chidb;
  假如設定了url屬性,tnsEntry, driverType, portNumber, networkProtocol, server
  Name,和databaseName屬性將失效。
  在沒有設定url屬性的情況下,假如設定了tnsEntry屬性,portNumber, networkProtoc
  ol, serverName,和databaseName屬性將失效。
  假如使用OCI驅動程序,并且networkProtocol屬性被設定為ipc,除user和password外的
  所有其他屬性將失效。
  通過JNDI使用數據源在本節首先給出了一個實際程序,然后通過程序來講解如何通過JNDI查詢數據源。
  import java.sql.*;
  import javax.sql.*;
  import oracle.jdbc.driver.*;
  import oracle.jdbc.pool.DataSource;
  import javax.naming.*;
  import javax.naming.spi.*;
  import java.util.Hashtable;
  public class DataSourceJNDI
  {
  public static void main (String args [])
  throws SQLException
  {
  // 初始化名稱服務環境
  Context ctx = null;
  try
  {
  Hashtable env = new Hashtable (5);
  env.put (Context.INITIAL_CONTEXT_FACTORY,
  "com.sun.jndi.fscontext.RefFSContextFactory");
  env.put (Context.PROVIDER_URL, "file:JNDI");
  ctx = new InitialContext(env);
  }
  catch (NamingException ne)
  {
  ne.printStackTrace();
  }
  bind(ctx, "jdbc/chidb");
  lookup(ctx, "jdbc/chidb");
  }
  static void bind (Context ctx, String ln)
  throws NamingException, SQLException
  {
  // 創建一個DataSource實例
  DataSource ods = new DataSource();
  ods.setDriverType("thin");
  ods.setServerName("Chicago");
  ods.setNetworkProtocol("tcp");
  ods.setDatabaseName("chidb");
  ods.setPortNumber(1521);
  ods.setUser("guest");
  ods.setPassword("guest");
  // 把DataSource實例注冊到JNDI中
  System.out.println ("Doing a bind with the logical name : " + ln);
  ctx.bind (ln,ods);
  System.out.println ("SUCcessfully bound");
  }
  static void lookup (Context ctx, String ln)
  throws NamingException, SQLException
  {
  // 從JNDI中查詢DataSource實例
  System.out.println ("Doing a lookup with the logical name : " + ln);
  DataSource ods = (DataSource) ctx.lookup (ln);
  System.out.println ("Successful lookup");
  // 從查詢到的DataSource實例中獲取數據庫連接
    Connection conn = ods.getConnection();
    // 進行數據庫操作
  getUserName(conn);
  // 關閉連接
  conn.close();
  conn = null;
  }
  static void getUserName(Connection conn)
  throws SQLException
  {
  // 生成一個Statement實例
  Statement stmt = conn.createStatement ();
  // 從addressbook表中選中姓名列
  ResultSet rset = stmt.executeQuery ("select NAME from addressbook");
  // 列出addressbook表所有人的姓名
  while (rset.next ())
  System.out.println ("Name is " + rset.getString (1));
  // 關閉RseultSet實例
  rset.close();
  rset = null;
  // 關閉Statement實例
  stmt.close();
  stmt = null;
  stmt = null;
  }
  }
  程序首先生成了一個Context實例。javax.naming.Context接口定義了名稱服務環境(N aming Context)及該環境支持的操作。名稱服務環境實際上是由名稱和對象間的相互映 射組成。程序中初始化名稱服務環境的環境工廠(Context Factory)是com.sun.jndi.
  fscontext.RefFSContextFactory(該類在fscontext.jar中可以找到,由于fscontext.
  jar中包含的不是標準的API,用戶需要從www.javasoft.com中的JNDI專區下載一個名為
  fscontext1_2beta3.zip的壓縮文件,在該文件中可以找到fscontext.jar)。環境工廠的
  作用是生成名稱服務環境的實例,javax.naming.spi.InitialContextFactory接口定義 了環境工廠應該如何初始化名稱服務環境。在初始化名稱服務環境時還需要定義環境的 URL。程序中使用的是"file:JNDI",也就是把環境保存在本地硬盤的JNDI目錄下。
  初始化了名稱服務環境后,就可以把數據源實例注冊到名稱服務環境中。注冊時調用javax.naming.Context.bind()方法,參數為注冊名稱和注冊對象。注冊成功后,在JNDI目 錄下會生成一個.binding文件,該文件記錄了當前名

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美性猛交xxxx久久久| 欧美裸体xxxxx| 久久久久久91| 青草热久免费精品视频| 欧美精品一区在线播放| 在线精品视频视频中文字幕| 国产欧美精品一区二区| 成人av.网址在线网站| 欧美激情亚洲激情| 亚洲欧洲日产国产网站| 中文字幕精品一区二区精品| 亚洲欧美国产精品久久久久久久| 欧美亚洲一区在线| 久久久99免费视频| 97视频在线观看免费| 精品久久久国产精品999| 国产精品第1页| 国产成人精品一区二区在线| 欧美日韩国产一中文字不卡| 亚洲小视频在线观看| 欧美国产精品人人做人人爱| 国产专区精品视频| 欧美大胆在线视频| 亚洲男人天堂2019| 久久免费视频在线| 成人黄色免费看| 成人中心免费视频| 欧美老少配视频| 久久综合久久88| 国产精品久久久久久亚洲调教| 亚洲91精品在线观看| 欧美专区福利在线| 欧美视频在线免费| 中文字幕亚洲一区二区三区五十路| 夜夜躁日日躁狠狠久久88av| 欧美视频13p| 97人洗澡人人免费公开视频碰碰碰| 91中文字幕在线观看| 成人写真视频福利网| 成人在线精品视频| 久久影视电视剧凤归四时歌| 久久久久久国产免费| 亚洲欧美成人一区二区在线电影| 欧美高跟鞋交xxxxhd| 日韩av网站大全| 4444欧美成人kkkk| www欧美xxxx| 欧美做受高潮电影o| 亚洲性xxxx| 精品国产电影一区| 91日韩在线播放| 亚洲高清久久网| 深夜成人在线观看| 国产美女精品免费电影| 一本色道久久综合狠狠躁篇怎么玩| 91精品在线看| 国模吧一区二区三区| 亚洲iv一区二区三区| 午夜精品久久久久久久99热| 伊人久久精品视频| 精品久久久久久中文字幕| 国产精品v片在线观看不卡| 久久av.com| 国产欧美欧洲在线观看| 国产在线观看一区二区三区| 91精品久久久久久久久不口人| 97av在线播放| 日韩精品在线观看一区二区| 中文字幕亚洲精品| 亚洲成人在线网| 欧美性猛交xxxxx水多| 午夜精品三级视频福利| 97久久国产精品| 中文字幕日韩av| 伊人久久五月天| 欧美中文字幕在线| 在线视频国产日韩| 日本三级韩国三级久久| 欧美亚洲日本黄色| 性金发美女69hd大尺寸| 91超碰中文字幕久久精品| 成人久久久久爱| 国产精品日韩在线一区| 欧美激情一级精品国产| 国产女精品视频网站免费| 亚洲精品久久久久久久久久久久久| 国产精品无码专区在线观看| 亚洲视频在线看| 国产精品成人品| 青青久久aⅴ北条麻妃| 国产精品欧美风情| 美日韩在线视频| 久久99热精品这里久久精品| 欧美精品成人91久久久久久久| 国产日韩欧美一二三区| 国产精品看片资源| 中文字幕久久亚洲| 色综合亚洲精品激情狠狠| 国产精品久久久91| 国产精品青草久久久久福利99| 亚洲专区中文字幕| 亚洲欧美激情视频| 欧美另类老女人| 日本成人激情视频| 精品国产精品自拍| 欧美亚洲午夜视频在线观看| 国产精品久久久久不卡| 福利一区视频在线观看| 亚洲欧美日韩国产中文| 尤物九九久久国产精品的分类| 亚洲经典中文字幕| 亚洲аv电影天堂网| 丝袜美腿亚洲一区二区| 精品人伦一区二区三区蜜桃网站| 亚洲高清免费观看高清完整版| 成人黄色免费片| 国产精品嫩草影院一区二区| 日韩av在线直播| 亚洲国产欧美一区二区三区久久| 狠狠色狠狠色综合日日五| 日本亚洲欧美三级| 日韩av免费网站| 亚洲国产日韩欧美在线动漫| 国产婷婷97碰碰久久人人蜜臀| 日韩欧美成人区| 欧美专区在线观看| 亚洲人av在线影院| 国产精品视频白浆免费视频| 国产成人一区二区三区电影| 亚洲精品久久7777777| 久久亚洲精品中文字幕冲田杏梨| 日韩精品欧美国产精品忘忧草| 日韩电影免费观看在线观看| 日韩欧美在线视频免费观看| 欧美有码在线视频| 亚洲成人三级在线| 国产一区二区美女视频| 国产成人精品日本亚洲专区61| 精品久久久在线观看| 国产精品视频专区| 久久大大胆人体| 亚洲小视频在线| 一区二区欧美激情| 欧美激情视频在线| 国产精品久久久久久久久久东京| 亚洲国语精品自产拍在线观看| 亚洲色图激情小说| 日韩高清免费在线| 4438全国亚洲精品在线观看视频| 91美女片黄在线观| 91精品视频大全| 日韩在线视频线视频免费网站| 国产日韩在线亚洲字幕中文| 成人午夜两性视频| 久久露脸国产精品| 国产日韩欧美在线观看| 青青草国产精品一区二区| 亚洲精品国产精品乱码不99按摩| 日韩电影大全免费观看2023年上| 亚洲影视中文字幕| 亚洲xxxx视频| 91老司机在线| 欧美亚洲日本黄色| 亚洲mm色国产网站|