首先,你要明白,什么是數(shù)據(jù)源,數(shù)據(jù)源跟數(shù)據(jù)連接池有什么區(qū)別。
為上街等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及上街網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、上街網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
一般我們?cè)诔绦蚶锩媾渲玫?,最多都是?shù)據(jù)連接源,而不是數(shù)據(jù)連接池。
其次,在tomcate里面配置有個(gè)什么好處呢,’
如果一個(gè)服務(wù)器,里面有多個(gè)獨(dú)立的應(yīng)用,
那么,我們配置一個(gè)數(shù)據(jù)源,只需要在程序里面配置一下JNDI,就可以了,每個(gè)程序都
指向這個(gè)數(shù)據(jù)源就好了。
可是有一天我們要換數(shù)據(jù)庫(kù)了,如果我們賠的數(shù)據(jù)源,那么,我們就可以直接改數(shù)據(jù)源就好了。
如果是在數(shù)據(jù)庫(kù)里面配置的,那么我們就需要再每個(gè)工程里面都改一遍。
數(shù)據(jù)源是要配置到中間件服務(wù)器中的(比如:Tomcat,JBoss,WebLogic一類的),配置后可以提高數(shù)據(jù)庫(kù)查詢性能,避免重復(fù)的打開(kāi)和關(guān)閉數(shù)據(jù)庫(kù)。因此開(kāi)發(fā)java的B/S項(xiàng)目時(shí)(就是J2EE的項(xiàng)目,通過(guò)瀏覽器訪問(wèn)的項(xiàng)目),都會(huì)配置數(shù)據(jù)源連接。如果你寫的管理軟件是B/S結(jié)構(gòu),那么只需要在搭建環(huán)境的服務(wù)器上配置數(shù)據(jù)源就可以了,用戶訪問(wèn)時(shí)是通過(guò)瀏覽器訪問(wèn),不需要做其他設(shè)置。如果是C/S(就是用戶需要單獨(dú)安裝客戶端程序,比如QQ),也不需要在用戶那里設(shè)置數(shù)據(jù)源,只需要在你的服務(wù)器端程序上手工配置好數(shù)據(jù)源即可。
用JDBC的話就是
Class.forName("com.mysql.jdbc.Driver"); //加載驅(qū)動(dòng)
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/表空間名",
"用戶名", "密碼"); //獲取連接
Statement stmt = con.createStatement();
stmt.executeUpdate("操作數(shù)據(jù)庫(kù)");
導(dǎo)入java.sql包
一、加載要連接數(shù)據(jù)庫(kù)的驅(qū)動(dòng)程序
//Jdbc-Odbc橋 和 Microsoft Access 數(shù)據(jù)庫(kù)
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
// SQL Server 驅(qū)動(dòng)程序:
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
注:Class.forName()方法將給定的類加載到JVM,如果系統(tǒng)中不存在給定的類,則會(huì)引發(fā)異常
二、通過(guò)驅(qū)動(dòng)程序管理器得到連接實(shí)例
Connection conn=null;
//1.
//1.1建立數(shù)據(jù)源
conn=DriverManager.getConnection("jdbc:odbc:MyDataSource"); //MyDataSource是數(shù)據(jù)源名稱
//1-2、不建立數(shù)據(jù)源
conn=DriverManager.getConnection("jdbc:odbc:;Driver=Microsoft Access Driver (*.mdb);DBQ=C:\\VBTest.mdb");
//2.SQL Server
conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;databasename=mydb","sa","");
注:DriverManager類跟蹤已注冊(cè)的驅(qū)動(dòng)程序,通過(guò)getConnection(URL)方法, 找到一個(gè)能夠連接至URL中指定的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序
它接收三個(gè)參數(shù), 分別表示1 數(shù)據(jù)源的名稱、類型 2 用戶名(可選) 3 密碼(可選)
三、基于連接對(duì)象建立處理器對(duì)象
Statement stmt=conn.createStatement();
四、準(zhǔn)備sql命令
String sql="select * from Student";
五、執(zhí)行命令返回結(jié)果集
ResultSet rs=stmt.executeQuery(sql);
六、顯示結(jié)果集
while(rs.next())//只要后面有記錄
{
//對(duì)當(dāng)前行的所有字段遍歷
for(int i=1;i=rs.getMetaData().getColumnCount();i++)
{
System.out.print(rs.getMetaData().getColumnName(i)+": ");//顯示字段名
System.out.println(rs.getString(i));//顯示字段當(dāng)前值
}
System.out.println();
}
七、關(guān)閉資源
rs.close(); //關(guān)閉記錄集
stmt.close(); //關(guān)閉處理器對(duì)象
conn.close(); //關(guān)閉連接對(duì)象
預(yù)處理器的應(yīng)用:
//3.基于連接對(duì)象建立預(yù)處理器對(duì)象
PreparedStatement pstmt=conn.prepareStatement("insert into student values(?,?,?,?)");
//4.給預(yù)處理對(duì)象的參數(shù)賦值
pstmt.setString(1,"8888");
pstmt.setString(2,"nemo");
pstmt.setString(3,"accp");
pstmt.setString(4,"sanxianglu");
//5.執(zhí)行預(yù)處理命令
int i=pstmt.executeUpdate();
System.out.println(i+"條記錄已成功插入!");
你好,我來(lái)先回答你的第一個(gè)問(wèn)題:
通常多數(shù)據(jù)源,在spring中配置如下,如果你想切換環(huán)境ENV 的值,在property中
bean id="placeholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
property name="ignoreResourceNotFound" value="true"/property
property name="ignoreUnresolvablePlaceholders" value="true"/property
property name="nullValue" value="NULL"/property
property name="locations"
list
valuejdbc.properties/value
/list
/property
/bean
bean id="dataSource" class="com.spring.dao.JDBCConfig"
property name="driverClassName" value="${${Env}.jdbc.driverClassName}"/property
property name="url" value="${${Env}.jdbc.url}"/property
property name="username" value="${${Env}.jdbc.username1}"/property
property name="password" value="${${Env}.jdbc.password}"/property
/bean
jdbc.properties
*****************************
Env=PROD
jdbc.driverClassName=${${Env}.jdbc.driverClassName}
jdbc.url=${${Env}.jdbc.url}
jdbc.username=${${Env}.jdbc.username}
jdbc.password=${${Env}.jdbc.password}
######### JDBC Configuration for DEV Environment ###############
DEV.jdbc.driverClassName=com.mysql.jdbc.Driver
DEV.jdbc.url=jdbc:mysql://localhost:3306/devportal
DEV.jdbc.username=DEVuser
DEV.jdbc.password=DEVpwd
######### JDBC Configuration for UAT Environment ############
UAT.jdbc.driverClassName=com.mysql.jdbc.Driver
UAT.jdbc.url=jdbc:mysql://localhost:3306/UATportal
UAT.jdbc.username=UATuser
UAT.jdbc.password=UATpwd
########## JDBC Configuration for PROD Environment ############
PROD.jdbc.driverClassName=com.mysql.jdbc.Driver
PROD.jdbc.url=jdbc:mysql://localhost:3306/portal
PROD.jdbc.username=root
PROD.jdbc.password=admin,
我這里有三套環(huán)境,分別是DEV,UAT和PROD,這種方式可以靈活切換的。
我再回答你的第二個(gè)問(wèn)題:
還請(qǐng)你去這里看下,很詳細(xì),不過(guò)是英文的哦
package com.bin.struts.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBConn2000 {
public static Connection getConn(){
String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=//數(shù)據(jù)庫(kù)名字";
String user = "sa";
String password = "123";
try {
Class.forName(driver);
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
return DriverManager.getConnection(url,user,password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
public static Connection close(){
return null;
}
}
這是2000的連接方法
這是2005的連接串
jdbc:sqlserver://localhost:1433;databasename=//數(shù)據(jù)庫(kù)
com.microsoft.sqlserver.jdbc.SQLServerDriver
2000數(shù)據(jù)庫(kù)需要打SP4補(bǔ)丁.
并且兩個(gè)都需要專門的JDBC驅(qū)動(dòng)的