Java Study Center |
|
|||
日歷
統計
導航常用鏈接留言簿(1)隨筆檔案(40)文章檔案(3)搜索最新評論
閱讀排行榜評論排行榜 |
來源:http://www.aygfsteel.com/guming123416/articles/28002.html 版本比較新, 網上好多都是說的是 Tomcat 4 的, 這個是 5.0 的. 如何連接SQL Server數據庫(Java)Posted on 2006-01-14 09:56 lovajava_ye 閱讀(96) 評論(0) 編輯 收藏在CSDN上看到很多朋友問起這個問題,所以想給鄙人曾接觸過的一些方法總結如下: 用Java連接SQL Server2000數據庫有多種方法,下面介紹其中最常用的兩種(通過JDBC驅動連接數據庫)。 1. 通過Microsoft的JDBC驅動連接。此JDBC驅動共有三個文件,分別是mssqlserver.jar、msutil.jar和msbase.jar,可以到微軟的網站去下載(http://www.microsoft.com/downloads/details.aspx?FamilyId=07287B11-0502-461A-B138-2AA54BFDC03A&displaylang=en),如果你下載的是setup.exe,還需要安裝它,安裝后會生成上面的三個jar文件。此JDBC驅動實現了 JDBC 2.0。 2. 通過JTDS JDBC Driver連接SQL Server數據庫,此驅動的文件名為jtds-1.2.jar,下載路徑為(http://sourceforge.net/project/showfiles.php?group_id=33291),此驅動支持Microsoft SQL Server (6.5, 7.0, 2000 和2005) 和Sybase,并且實現了JDBC3.0,是免費的。 JDBC連接SQL Server數據庫的Bean代碼網上大把的有,下面摘錄其中的一部分:(請將localhost和1433改成你實際應用中的SQL Server服務器地址和端口號,dbname改成你實際的數據庫名) import java.sql.*; public class DatabaseConn { private Connection conn; private Statement stmt; private String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=dbname"; private String classforname = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; private String uid = "sa"; private String pwd = "password"; public DatabaseConn(){} /** * <p>通過Microsoft JDBC驅動獲得數據庫連接</p> * @return Connection * @exception ClassNotFoundException, SQLException */ public Connection getConnection() { try { Class.forName(classforname); if (conn == null || conn.isClosed()) conn = DriverManager.getConnection( url, uid, pwd); } catch (ClassNotFoundException ex) { ex.printStackTrace(); } catch (SQLException ex) { ex.printStackTrace(); } return conn; } } 當然,在做上述工作之前,你得先檢查自己的SQL Server設置是否有問題,步驟如下: 首先打開“命令行窗口”,也就是MS-Dos窗口,輸入 如果成功了,表明你的SQL Server是可以連上的,如果沒成功(一般是對于Win2003或者WinXP SP2),請進入控制面板,打開“管理工具”中的“服務”,啟動“SQLSERVERAGENT”服務(當然,你也可以打上SQL Server的SP3補丁包),再繼續上面的操作,應該會成功的。 其次,檢查你的用戶名和密碼是否能登陸SQL Server服務器,當然,最直接的辦法就是打開SQL Server的“查詢分析器”,輸入用戶名和密碼,點擊確定 如果成功了,表明你的SQL Server登陸設置沒問題,如果失敗了,請打開SQL Server的“企業管理器”,在你注冊的SQL Server服務器上(也就是左邊的“SQL Server組”下面的那東東)也就是點擊右鍵,選擇“屬性”,在“SQL Server (屬性) 配置”對話框中選擇“安全性”,將身份驗證設為“SQL Server和Windows(S)”,再用查詢分析器測試一次,如果還連接不上,就去檢查你的用戶名和密碼是否有誤。重復測試,直至成功。 如果在JSP中應用連接,當然,除了直接用JDBC外,大伙最熱衷于的莫過于連接池(Pool)了,下面著重介紹一下連接池的幾種用法。 為了方便,先設定JSP容器為Tomcat,因為大家用得比較多 <Resource name="jdbc/poolName" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="sa" password="password" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=dbname"/> 注意:name為連接池的全局JNDI全稱,username為password為數據庫的連接用戶名和密碼,driverClassName是數據庫驅動名稱,url是數據庫連接字符串。請按照你的實際配置進行修改。 找到</Context>,并在這一行的前面插入如下代碼: 2. 局部配置:在$TOMCAT_HOME$/conf/Catalina/localhost/目錄下新建一個xml文件,該xml文件要與你發布的Web應用目錄名稱相同,假如為webappname.xml,加入以下內容(配置Tomcat的外部虛擬目錄也是在這里搞掂的,哈!) <Context path="/webappname" docBase="d:/webappname" debug="0" reloadable="true" crossContext="true"> <Resource name="jdbc/poolName" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="sa" password="password" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=dbname"/> <ResourceLink global="jdbc/poolName" name="jdbc/poolName" type="javax.sql.DataSource"/> </Context> 對于前面兩種方法,調用連接池代碼如下:(其中com.yeno.util.Debug的Debug.log()方法主要用于打印調試信息,可以用System.out.println()代替) (注意, 這個類只能在 Tomcat 里運行, BeanSoft 注) import java.sql.*; import javax.sql.DataSource; import javax.naming.*; import com.yeno.util.Debug; /** * <p>數據庫操作管理類,只實現數據庫的連接,關閉和事務處理</p> * @Aurhor Yeno.hhr * Create Date 2005-12-9 */ public class DataPool { public DataPool(){} /** * <p>通過Tomcat連接池取得數據庫連接</p> * @param no * @return Connection 數據庫連接 * @exception NamingException,SQLException,Exception */ public Connection getConnect() { Connection conn = null; try { Context intitCtx = new InitialContext(); Context envCtx = (Context)intitCtx.lookup("java:comp/env"); DataSource ds = (DataSource)envCtx.lookup("jdbc/poolName"); conn = ds.getConnection(); } catch(NamingException nex) { Debug.log(this,"getConnect()","No correct environment!"); } catch(SQLException sqlex) { Debug.log(this,"getConnect()","Can't get connection!"); } return conn; } } 在使用上述代碼之前,必須保證JDBC驅動的相關JAR文件(Microsoft為mssqlserver.jar、msutil.jar和msbase.jar,JTDS為jtds-1.2.jar)已正確配置,可以將相關JAR文件拷貝到$TOMCAT_HOME$/common/lib/目錄下,也可以拷貝到$WEB_ROOT$/WEB-INF/lib/目錄下 還可以用注入方式來調用連接池,即在Hibernate的配置文件hibernate.cfg.xml中調用,在JSP容器中配置好連接池以后,再在Hibernate的配置文件中調用系統的連接池設置,關鍵代碼摘錄如下: <session-factory> <!-- <property name="jndi.class"></property> <property name="jndi.url"></property> --> <property name="connection.datasource">java:comp/env/jdbc/poolName</property> <property name="show_sql">false</property> <property name="dialect">org.hibernate.dialect.SQLServerDialect</property> </session-factory> Hibernate的具體使用方法,請查閱相關詳細資料。 葉明 |
![]() |
|
Copyright © 綠茶_鄭州 | Powered by: 博客園 模板提供:滬江博客 |