資料庫連接池實例
㈠ 求java與資料庫連接實例,越詳細越好!資料庫是sqlserver2000。
public
class
www
{
public
static
void
main(String[]args)
throws
Exception
{
//第一步:載入驅動(驅動jar包必須加入classpath中)
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//第二步:建立連接(根據實際情況替換資料庫的主機地址、埠號、資料庫明、登錄名、密碼)
Connection
conn
=
DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=shijiuban1",
"sa",
"111111");
System.out.println("當前連接到的資料庫="+conn.getCatalog());//查看當前連接到的資料庫名
//第三步:創建Statement對象
Statement
stmt
=
conn.createStatement();//只讀的結果集
//Statement
stmt2
=
conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);//可更新的結果集
//第四步:執行操作(增刪改查)
ResultSet
rs
=
stmt.executeQuery("select
*
from
stt");
//處理結果
while(rs.next()){
System.out.println(rs.getString("1"));
}
//第五步:關閉連接
conn.close();
}
}
㈡ Java資料庫連接池的幾種配置方法(以MySQL數
連接先建立一些連接,並且這些連接允許共享,因此這樣就節省了每次連接的時間開銷。Mysql資料庫為例,連接池在Tomcat中的配置與使用。
1、創建資料庫Student,表student
2、配置server.xml文件。Tomcat安裝目錄下conf中server.xml文件。
<GlobalNamingResources>
<Resource
name="jdbc/DBPool"
type="javax.sql.DataSource"
password=""
driverClassName="com.mysql.jdbc.Driver"
maxIdle="2"
maxWait="5000"
username="root"
url="jdbc:mysql://localhost:3306/student"
maxActive="3"
/>
</GlobalNamingResources>
name:指定連接池的名稱
type:指定連接池的類,他負責連接池的事務處理
url:指定要連接的資料庫
driverClassName:指定連接資料庫使用的驅動程序
username:資料庫用戶名
password:資料庫密碼
maxWait:指定最大建立連接等待時間,如果超過此時間將接到異常
maxIdle:指定連接池中連接的最大空閑數
maxActive:指定連接池最大連接數
3、配置web.xml文件。
<web-app>
<resource-ref>
<description>mysql資料庫連接池配置</description>
<res-ref-name>jdbc/DBPool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
</web-app>
4、配置context.xml文件
與server.xml文件所在的位置相同。
<Context>
<ResourceLink
name="jdbc/DBPool"
type="javax.sql.DataSource"
global="jdbc/DBPool"
/>
</Context>
5、測試
DataSource pool = null;
Context env = null;
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try{
env = (Context)new InitialContext().lookup("java:comp/env");
//檢索指定的對象,返回此上下文的一個新實例
pool = (DataSource)env.lookup("jdbc/DBPool");
//獲得資料庫連接池
if(pool==null){out.printl("找不到指定的連接池!");}
con = pool.getConnection();
st = con.createStatement();
rs = st.executeQuery("select * from student");
}catch(Exception ex){out.printl(ne.toString());}
㈢ 求一個asp與sql資料庫連接的應用實例,越簡單越好。
創建資料庫連接對象
<%
set dxm=server.CreateObject("adodb.connection")
blm="driver=sql server;server=你計算機的IP地址;database=web;uid=sa;pwd="
dxm.open blm
%>
uid=sa;pwd= 你可以打開你的查詢分析器看看他是用什麼身份驗證的
如果不是sa和空密碼就自己設置一個用戶.
dxm和blm是自己定的對象名和變數名
添加數據:
<%
set sql=server.CreateObject("adodb.recordset")
sql.open "select * from 表名",dxm,1,3 '這里是全表查詢
sql.addnew
sql("欄位名")=要添加的數據(如果是用表單提交就用 request.form("表單文本框名稱") )
你有幾個欄位就添加幾次(例如:sql("name")=request.from("username"))
sql.update
%>
上面是添加數據的方法,現在該查詢了:
<%
set sql=server.CreateObject("adodb.recordset")
sql.open "select * from 表名",dxm,1,3 '這里是全表查詢
%>
在你想要顯示的地方做上<%=sql("欄位名")%>就可以了.
刪除:
將添加數據那裡的代碼改為:
<%set sql=server.CreateObject("adodb.recordset")
sql.open "select * from 表名 where 條件",dxm,1,3
sql.delete
%>
條件 就是例如name=小張 等等類似的
改:同添加一樣
將添加中的sql.addnew去掉
改為:sql.update
代碼如下:
<%
set sql=server.CreateObject("adodb.recordset")
sql.open "select * from 表名",dxm,1,3 '這里是全表查詢
sql.update
sql("欄位名")=要更改的數據(如果是用表單提交就用 request.form("表單文本框名稱") )
你改幾個欄位就寫幾次(例如:sql("name")=request.from("username")
sql("sex")=request.from("sex"))
%>
這是用sql語句的對象做的,下面給你一些增、刪、改、查 的代碼
增:
全表添加:insert into 表名 values (值1,值2,……值n)
部分欄位添加:
insert into 表名(欄位1,欄位2,……欄位n) values(值1,值2,……值n)
刪:delete from 表名 where 條件
改:update 表名 set 欄位名1=新值1,欄位名2=新值2,……where 條件
查:select * from (全表查詢)
select * from 表名 where 條件 (帶條件查詢)
㈣ 求jsp資料庫連接池示例!!!
javabean?還有是鏈接什麼資料庫mysql還是Oracle
㈤ 求一個簡單又經典的JAVA資料庫連接的例子,要有源代碼哦!
我就弄的用戶登入的代碼吧.這個挺簡單的.
這是題目:
用戶登陸驗證:
1.創建資料庫Test,並新建用戶表users
欄位包含:username varchar(20) not null
userpwd varchar(20) not null
在JBUILDER中編寫Long類,實現登陸界面,並在用戶輸入用戶名和密碼後,
完成按紐的單擊事件,對用戶輸入的數據進行驗證,
(需要嚴整數據是否為空,密碼長度必須是15位),
並實現與資料庫的連接,將用戶輸入的用戶名密碼與表中的記錄比較,
若用戶名正確且密碼正確,彈出提示框告知登陸成功,否則登陸失敗。
這是代碼:
//連接資料庫
boolean isLogin(String name,String pwd){
boolean flag=false;
Connection conn=null;
PreparedStatement pst=null;
ResultSet rs=null;
//載入驅動
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
//連接資料庫
try {
conn=DriverManager.getConnection("jdbc:odbc:login");
String sql="select * from [user] where username=? and userpwd=?";
pst=conn.prepareStatement(sql);
pst.setString(1,name);
pst.setString(2,pwd);
rs=pst.executeQuery();
if(rs.next())
flag=true;
} catch (Exception ex) {
ex.printStackTrace();
}finally{
try {
conn.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
return flag;
}
//驗證方法
public void jButton1_actionPerformed(ActionEvent e) {
String name=jTextField1.getText();
String pwd=jTextField2.getText();
//錯誤處理
if(name.equals("")||pwd.equals(""))
JOptionPane.showMessageDialog(this,"請輸入完整的信息");
else {
if(isLogin(name,pwd))
JOptionPane.showMessageDialog(this,"登陸成功");
else
JOptionPane.showMessageDialog(this,"用戶名或密碼錯誤");
}
}
}
.....
.....
這是在事件里寫的,
㈥ 幾種開源資料庫連接池的使用感受
在項目中嘗試使用了幾種開源的資料庫連接池實現。一種是dbcp,一種是c3p0,還有一種是proxool,這幾種資料庫連接池都可以很容易的在Spring配置起來。性能總體上上感覺dbcp為最優,因為穩定性和並發性都是我的項目需要的。
項目中經過反復測試,如果web server和資料庫server不是同一個機器的話,在斷網時間比較短的時間內三種資料庫連接池都能較好的重連,但是在斷網時間超過8個鍾頭 proxool就不能恢復工作了。但是dbcp卻能很快的重新連接。實際生產環境中穩定性和總體性能是最重要的,都需要做相應的測試才能放心的讓系統上生產線。
這里給出項目中資料庫連接池配置:
dbcp的jndi:13 4 java:comp/env/jdbc/mysql5 6 proxool(proxool-0.9.0RC1)的配置: com.mysql.jdbc.Driver jdbc:mysql://ip:3306/dbname?useUnicode=true&characterEncoding=utf8&autoReconnect=true user password 500 15000 select CURRENT_DATE true mysqlProxoolDataSource 1000 false 建議使用DBCP,配置在tomcat中,然後在spring中使用jndi的形式獲取。 c3p0(c3p0-0.9.0): 1 3 4 com.mysql.jdbc.Driver 5 6 7 jdbc:mysql://192.168.0.225:3306/sendinmdb?useUnicode=true&characterEncoding=utf8&autoReconnect=true 8 9 10 ********11 12 13 ********14 15 16 10017 18 19 5020 21 22 10023 24 25 100026 27 28 3029 30 直接 & paste到spring配置文件里就可以使用了。 配置一些額外的tomcat 的DBCP連接池參數,也可以更好的使用到類似proxool提供的功能,只是dbcp更加穩定而已。tomcat/conf/context.xml中插入一個Resource元素: 解釋一下以下這些參數的含義:
validationQuery = "select current_date()"
testOnBorrow = "true"
testOnReturn = "false"
testWhileIdle = "true"
當 從池中獲取一個Connection後使用 select current_date() 來測試該資料庫連接的可用性,如果SQL語句返回結果則認為是一個有效的連接,否則將繼續測試知道可以拿到有效的連接。當返回Connection給池的時候不進行驗證,但是Connection空閑的時候就要進行認證。
timeBetweenEvictionRunsMillis = "15000"
DBCP 清空線程睡眠的間隙,如值為負數則不運行該線程
numTestsPerEvictionRun = "10"
清空線程每次驗證的連接對象個數
minEvictableIdleTimeMillis = "600000" Connection對象可以在池中空閑的最小時間,單位為毫秒詳細配置請訪問
㈦ C# 求一個簡單的資料庫連接池的例子,要求是有30個連接,一個函數只要調用可以隨時返回一個可用連接
/*
資料庫連接池
***********模塊說明**************
getInstance()返回POOL唯一實例,第一次調用時將執行構造函數
構造函數Pool()調用驅動裝載loadDrivers()函數;連接池創建createPool()函數
loadDrivers()裝載驅動
createPool()建連接池
getConnection()返回一個連接實例
getConnection(longtime)添加時間限制
freeConnection(Connectioncon)將con連接實例返回到連接池
getnum()返回空閑連接數
getnumActive()返回當前使用的連接數
*/
importjava.sql.*;
publicclassPool{
staticprivatePoolinstance=null;//定義唯一實例
privateintmaxConnect=100;//最大連接數
privateintnormalConnect=10;//保持連接數
privateStringpassword="";//密碼
privateStringurl="jdbc:mysql://localhost:3306/DB";//連接URL
privateStringuser="";//用戶名
privateStringdriverName="";//驅動類
Driverdriver=null;//驅動變數
DBConnectionPoolpool=null;//連接池實例變數
/**
*返回唯一實例
*@return
*/
(){
if(instance==null){
instance=newPool();
}
returninstance;
}
/**
*將構造函數私有,不允許外界訪問
*/
privatePool(){
loadDrivers(driverName);
createPool();
}
/**
*裝載和注冊所有JDBC驅動程序
*@paramdri
*/
privatevoidloadDrivers(Stringdri){
StringdriverClassName=dri;
try{
driver=(Driver)Class.forName(driverClassName).newInstance();
DriverManager.registerDriver(driver);
System.out.println("成功注冊JDBC驅動程序"+driverClassName);
}catch(Exceptione){
System.out.println("無法注冊JDBC驅動程序:"+driverClassName+",錯誤:"+e);
}
}
/**
*創建連接池
*/
privatevoidcreatePool(){
pool=newDBConnectionPool(password,url,user,normalConnect,maxConnect);
if(pool!=null){
System.out.println("創建連接池成功");
}else{
System.out.println("創建連接池失敗");
}
}
/**
*獲得一個可用的連接,如果沒有則創建一個連接,且小於最大連接限制
*@return
*/
publicConnectiongetConnection(){
if(pool!=null){
returnpool.getConnection();
}
returnnull;
}
/**
*獲得一個連接,有時間限制
*@paramtime
*@return
*/
publicConnectiongetConnection(longtime){
if(pool!=null){
returnpool.getConnection(time);
}
returnnull;
}
/**
*將連接對象返回給連接池
*@paramcon
*/
publicvoidfreeConnection(Connectioncon){
if(pool!=null){
pool.freeConnection(con);
}
}
/**
*返回當前空閑連接數
*@return
*/
publicintgetnum(){
returnpool.getnum();
}
/**
*返回當前連接數
*@return
*/
publicintgetnumActive(){
returnpool.getnumActive();
}
/**
*關閉所有連接,撤銷驅動注冊
*/
publicsynchronizedvoidrelease(){
pool.release();
try{
DriverManager.deregisterDriver(driver);//撤銷驅動
System.out.println("撤銷JDBC驅動程序"+driver.getClass().getName());
}catch(SQLExceptione){
System.out.println("無法撤銷JDBC驅動程序的注冊:"+driver.getClass().getName());
}
}
}
//生成數據連接池
importjava.sql.*;
importjava.util.*;
importjava.util.Date;
publicclassDBConnectionPool{
privateintcheckedOut;
privateVector<Connection>freeConnections=newVector<Connection>();
privateintmaxConn;
privateStringpassword;
privateStringurl;
privateStringuser;
privatestaticintnum=0;//空閑的連接數
privatestaticintnumActive=0;//當前的連接數
publicDBConnectionPool(Stringpassword,Stringurl,Stringuser,intnormalConn,intmaxConn){
this.password=password;
this.url=url;
this.user=user;
this.maxConn=maxConn;
for(inti=0;i<normalConn;i++){//初始normalConn個連接
Connectionc=newConnection();
if(c!=null)
{freeConnections.addElement(c);num++;}
}
}
/**
*釋放不用的連接到連接池
*/
(Connectioncon){
freeConnections.addElement(con);
num++;
checkedOut--;
numActive--;
notifyAll();
}
/**
*獲取一個可用連接
*@return
*/
(){
Connectioncon=null;
if(freeConnections.size()>0){//還有空閑的連接
num--;
con=(Connection)freeConnections.firstElement();
freeConnections.removeElementAt(0);
try{
if(con.isClosed()){
System.out.println("從連接池刪除一個無效連接");
con=getConnection();
}
}catch(SQLExceptione){
System.out.println("從連接池刪除一個無效連接");
con=getConnection();
}
}
elseif(maxConn==0||checkedOut<maxConn){//沒有空閑連接且當前連接小於最大允許值,最大值為0則不限制
con=newConnection();
}
if(con!=null){//當前連接數加1
checkedOut++;
}
numActive++;
returncon;
}
/**
*獲取一個連接,並加上等待時間限制,時間為毫秒
*@paramtimeout
*@return
*/
(longtimeout){
longstartTime=newDate().getTime();
Connectioncon;
while((con=getConnection())==null){
try{
wait(timeout);
}catch(InterruptedExceptione){}
if((newDate().getTime()-startTime)>=timeout){
System.out.println("超時了!!");
returnnull;//超時返回
}
}
returncon;
}
/**
*關閉所有連接
*/
@SuppressWarnings("unchecked")
publicsynchronizedvoidrelease(){
EnumerationallConnections=freeConnections.elements();
while(allConnections.hasMoreElements()){
Connectioncon=(Connection)allConnections.nextElement();
try{
con.close();
num--;
}catch(SQLExceptione){
System.out.println("無法關閉連接池中的連接");
}
}
freeConnections.removeAllElements();
numActive=0;
}
/**
*創建一個新連接
*@return
*/
(){
Connectioncon=null;
try{
if(user==null){//用戶,密碼都為空
con=DriverManager.getConnection(url);
}else{
con=DriverManager.getConnection(url,user,password);
}
System.out.println("連接池創建一個新的連接");
}catch(SQLExceptione){
System.out.println("無法創建這個URL的連接"+url);
returnnull;
}
returncon;
}
/**
*返回當前空閑連接數
*@return
*/
publicintgetnum(){
returnnum;
}
/**
*返回當前連接數
*@return
*/
publicintgetnumActive(){
returnnumActive;
}
}
㈧ 什麼是資料庫連接池,有什麼作用
資料庫連接是一種有限的昂貴的資源,
資料庫連接影響到程序的性能指標。
資料庫連接池正是針對這個問題提出來的。資料庫連接池負責分配、
管理和釋放資料庫連接,
它允許應用程序重復使用一個現有的資料庫連接,
而再不是重新建立一個;
釋放空閑時間超過最大空閑時間的資料庫連接來避免因為沒有釋放數
據庫連接而引起的資料庫連接遺漏。
這項技術能明顯提高對資料庫操作的性能。
㈨ 資料庫連接池問題
8月25日 09:18
access資料庫連接
用dsn連接並且沒有用戶名和密碼:
<%
set conn = server.createobject("adodb.connection")
conn.open "yourdsnname"
%>
用dsn連接並且有用戶名和密碼:
<%
set conn = server.createobject("adodb.connection")
conn.open "yourdsnname","username","password"
%>
用實際的資料庫絕對路徑連接:
<%
set conn = server.createobject("adodb.connection")
strconn="driver=; "
strconn=strconn & "dbq=e:\yanhang\database.mdb"
conn.open strconn
%>
用實際的資料庫相對路徑連接:
<%
set conn = server.createobject("adodb.connection")
strconn="driver=; "
strconn=strconn & "dbq=" & server.mappath("/database/yanhang.mdb")
conn.open strconn
%>
ms sql server資料庫連接
用dsn連接:
<%
set conn = server.createobject("adodb.connection")
conn.open "dsn=mydsn;uid=user;pwd=password;database=databasename"
%>
不用dsn連接:
<%
set conn = server.createobject("adodb.connection")
dsntemp="driver=;server=servername;uid=user;pwd=password;database=databasename"
conn.open dsntemp
%>
foxpro資料庫連接
<%
set conn = server.createobject("adodb.connection")
connstr= "driver=microsoft visual foxpro driver; uid=userid;sourcetype=dbc;sourcedb=c:\yanhang\database.dbc"
conn.open connstr
%>
oracle資料庫連接:
<%
set conn=server.createobject("adodb.connection")
conn.cursorlocation=aseclient
dsntemp="provider=msra.1;password=xxxxx;user id=yanhang;data source=xxx.world"
conn.open dsntemp
%>