oledbconnection

OLEDBConnection 和SQLConnection 有什么區別SQLConnection , 連接池被隱式管理,但也提供選項允許您自己管理池 。SQLConnection是SQL專用的 , OLEDBConnection可以對其他數據庫的連接,如Access 。同類其他面試題 點擊新一篇或舊一篇可瀏覽全部同類面試題新一篇:采用怎樣的方法保證數據的完整性?舊一篇:解釋DataSet(ds) 和 ds as DataSet 的含義?共有1條 關于 “”的評論1jim.jin:They are two different implementations of IDBConnection. SqlConnection isthe SqlServer implementation, OleDb was everything ‘else’ . That’s beenminimized to some degree since the addition of the ODBC and Oracle librariesin the 1.1 framework so OleDbConnection should probably be renamed toPeopleWhoStillUseMSAccessConnectionThe answer to your question though. Back in the old school days, a bunch ofVB programmers started whining b/c data access was too hard. So Microsoftcame out with ODBC which was an agreed upon spec that you could use toaccess any database that complied with it. They still complained that itwas still to hard. So they came up with OleDB, the next version ofDataAccessForEveryone. From there things morphed into ADO and then morenot agree to abide by, most have but some haven’t.你有答案? 你對以上面試題有意見? 你想發表你的見解? 寫下來吧!你的分享將會讓很多人受益!

c#怎么使用oledbconnection關于使用ADO.NET創建并寫入Excel文件與普通數據庫操作極為類似,參見以下代碼:
String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=c:/test.xls;" +
"Extended Properties=Excel 8.0;";
OleDbConnection cn = new OleDbConnection(sConnectionString);
string sqlCreate = "CREATE TABLE TestSheet ([ID] INTEGER,[Username] VarChar,[UserPwd] VarChar)";
OleDbCommand cmd = new OleDbCommand(sqlCreate, cn);
//創建Excel文件:C:/test.xls
cn.Open();
//創建TestSheet工作表
cmd.ExecuteNonQuery();
//添加數據
cmd.CommandText = "INSERT INTO TestSheet VALUES(1,'elmer','password')";
cmd.ExecuteNonQuery();
//關閉連接
cn.Close();

OLEDBConnection 和SQLConnection 有什么區別.NET答:OLEDBConnection , 連接池將由提供程序自動處理,所以您不必自己進行管理 。SQLConnection,連接池被隱式管理,但也提供選項允許您自己管理池 。SQLConnection是SQL專用的,OLEDBConnection可以對其他數據庫的連接 , 如Access 。同類其他面試題 點擊新一篇或舊一篇可瀏覽全部同類面試題新一篇:采用怎樣的方法保證數據的完整性?舊一篇:解釋DataSet(ds) 和 ds as DataSet 的含義?共有1條 關于 “”的評論1jim.jin:They are two different implementations of IDBConnection. SqlConnection isthe SqlServer implementation, OleDb was everything ‘else’ . That’s beenminimized to some degree since the addition of the ODBC and Oracle librariesin the 1.1 framework so OleDbConnection should probably be renamed toPeopleWhoStillUseMSAccessConnectionThe answer to your question though. Back in the old school days, a bunch ofVB programmers started whining b/c data access was too hard. So Microsoftcame out with ODBC which was an agreed upon spec that you could use toaccess any database that complied with it. They still complained that itwas still to hard. So they came up with OleDB, the next version ofDataAccessForEveryone. From there things morphed into ADO and then morenot agree to abide by, most have but some haven’t.你有答案? 你對以上面試題有意見? 你想發表你的見解? 寫下來吧!你的分享將會讓很多人受益!你的名字相關面試題 ·Sr.Net 和Winform.net開發面試題 ·.net面試中的一些常見問題與答案 ·一些.NET軟件開發基礎面試題的參考答案,鞏固一下基礎理論知識吧 ·.NET ASP.NET開發工程師面試題 ·.NET類的初始化時內容空間是如何分配的?

什么是oledbOLEDB(對象鏈接和嵌入數據庫)位于ODBC層與應用程序之間. 在你的ASP頁面里,ADO是位于OLEDB之上的"應用程序". 你的ADO調用先被送到OLEDB,然后再交由ODBC處理. 你可以直接連接到OLEDB層,如果你這么做了,你將看到服務器端游標(recordset的缺省的游標,也是最常用的游標)性能的提升.

用oledb連接數據庫:
A.sql server:
connstr="PROVIDER=SQLOLEDB;
DATA SOURCE=servername;UID=xx;PWD=xxx;DATABASE=dbname"
B.access:
connstr="PROVICER=MICROSOFT.JET.OLEDB.4.0;
DATA SOURCE=c:\abc\abc.mdb"
值得注意的是,OLE DB對ODBC的兼容性,允許OLE DB訪問現有的ODBC數據源 。其優點很明顯,由于ODBC相對OLE DB來說使用得更為普遍,因此可以獲得的ODBC驅動程序相應地要比OLE DB的要多 。這樣不一定要得到OLE DB的驅動程序,就可以立即訪問原有的數據系統 。
提供者位于OLE DB層,而驅動程序位于ODBC層 。如果想使用一個ODBC數據源,需要使用針對ODBC的OLE DB提供者,它會接著使用相應的ODBC驅動程序 。如果不需要使用ODBC數據源,那么可以使用相應的OLE DB提供者,這些通常稱為本地提供者(native provider) 。
可以清楚地看出使用ODBC提供者意味著需要一個額外的層 。因此 , 當訪問相同的數據時,針對ODBC的OLE DB提供者可能會比本地的OLE DB提供者的速度慢一些 。

C#OleDbCommand是干什么的OleDbCommand表示要對access數據源執行的sql語句或存儲過程 。
具體用法:

OleDbConnection con=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; data source=data.mdb");
con.Open();
OleDbCommand dc=new OleDbCommand("select name from us where id=2", con);
textBox1.Text=dc.ExecuteScalar().ToString();
OleDbConnection con=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; data source=data.mdb");
con.Open();
OleDbCommand dc=new OleDbCommand("insert into us (name) values (11)", con);
dc.ExecuteNonQuery();
con.Close();

string us=textBox2.Text;
string pa=textBox1.Text;
OleDbConnection con=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; data source=data.mdb");
OleDbCommand oldC=new OleDbCommand("insert into users (username, userpassword) values (@username, @userpassword)", con);
oldC.Parameters.Add("@username", us);
oldC.Parameters.Add("@userpassword", pa);
con.Open();
oldC.ExecuteNonQuery();
con.Close();
MessageBox.Show("Register successful!");
this.Dispose();

c#oledbconnection連接數據庫后怎么執行sql語句 public DataTable QueryDataTable(string queryStr){DataTable dt = new DataTable();OleDbConnection conn = new OleDbConnection(ConnectionString);OleDbDataAdapter adp = new OleDbDataAdapter(queryStr, conn);conn.Open();adp.Fill(dt);conn.Close();return dt;}//方法體的部分內容DBCommon db = new DBCommon();DataTable dt = new DataTable();OleDbConnection conn = new OleDbConnection(db.ConnectionString);OleDbCommand cmd = new OleDbCommand(countSql, conn);//查詢數據總數,用于分頁OleDbDataAdapter adp = new OleDbDataAdapter(sqlStr, conn);conn.Open();var rs = cmd.ExecuteScalar().ToString();//解決直接強制轉換為int時出錯的問題 。count = Int32.Parse(rs);adp.Fill(PageSize * (PageIndex - 1), PageSize, dt);conn.Close();

C# winfrom中OleDbConnection要導入什么命名空間?OleDbConnection屬于link Ole類型數據庫,既然是數據則命名空間在System.Data下,以是OleDB類型,所以需要using System.Data.OleDb;

visual studio 2010 c#里面怎么沒有OleDbConnection等數據庫控件這個不須要控件來表示,只要用new創建一個實例就可以用的,因為他是看不見的 。

在C#中,在添加按鈕里,怎樣定義多個oledbConnection對象,如何使用多個oledbConnection對象如果你偏要這樣做的話,我可以說一下,不過我覺得你完全可以用兩個按鈕來實現.
按你說的話:
在你添加完進貨信息后改變按鈕的Text屬性為"修改";在按鈕的事件中寫如下代碼:
if(button1.Text.Trim()=="修改")
{
//做修改操作
}
else{ //做添加操作 }

C#,求一個可以正確調用OleDbConnection.Open()的System.Data.dll文件大多數情況是連接串的問題
System.Data是.net基礎庫中的一個程序集 一般這個文件不會出錯
如果你用的是mono的話 可能會有奇怪的問題=A= 建議下載編譯最新的mono嘗試

oledb讀取excel需要你有對應的引擎(換而言之就是執行環境
對于97-03的excel需要jet4.007+需要ace 12.0
建議下載最新版本的MDAC獲得完整的引擎
或者 試圖使用第三方庫來讀取excel比如npoi

c#中智能設備sqlconnection怎樣加命名空間APP_CODE 寫的類 在同一WEB項目的代碼中使用不需要額外引用 。namespace N{ public Class XXX{}}在default.cs中只需要N.XXX x=new N.XXX 即可 。

c#中智能設備中sqlconnection怎樣加命名空間APP_CODE 寫的類 在同一WEB項目的代碼中使用不需要額外引用 。namespace N{ public Class XXX{}}在default.cs中只需要N.XXX x=new N.XXX 即可 。

ADO.NET中OleDb命名空間下的OleDbConnection對象OleDbConnection conn = new OleDbConnection("provider=microsoft.jet.oledb.4.0; data source=數據庫路徑");

c#用excel做報表,必須導入oledb命名空間用sql語句嗎?可以導入excel.dll嗎?用sql不方便,還是用導入dll吧,忘記叫什么名字了...

OleDbConnection conn=new OleDbConnection(); 這句運行出錯你的代碼是不是:public OleConn{get{ return oleConn = new OleDbConnection(conStr); }}這樣當然不行,因為你每次都是返回一個新的OleDbConnection(沒有Open)當然會報錯你可以用一個私有變量保存,或return前,先open,如:private OleDbConnection oleConn;public OleConn{get{ if(oleConn == null) oleConn = new OleDbConnection(conStr); return oleConn;}}或者:public OleConn{get{ oleConn = new OleDbConnection(conStr); oleConn.Open();return oleConn;}}

ConnectionString 屬性尚未初始化 。怎么回事ConfigurationSettings.AppSettings["AccessConnectionString"],這句話是獲取配置文件(就是*.Config文件)里面的AccessConnectionString節點中得值 , 你看看這個節點下面是否有值 , 連接字符串是否正確 。

conn = new OleDbConnection()和OleDbConnection conn = new OleDbConnection()是一個意思嗎拜托了各位 是一樣的! 前面的變量conn是在前面定義過的,只不過是在這里實例化 。后面的是定義conn變量然后就初始化 。一樣

using(SqlConnection connection=new SqlConnection(connectionString)){}using()
{}
將自動釋放()中對象占用的資源,就不用手動connection.Close();了



如果單獨的SqlConnection connection=new SqlConnection(connectionString);

在處理完成了之后 , 還必須手動connection.Close();

其他的就沒區別了 。

如何實現Oracel復制數據到SQL SERVER-CSDN論壇【oledbconnection】在項目中經常會遇到一個項目操作幾個數據庫的情況,若是同種類型的數據庫也還好說,可以直接鏈接兩個數據庫,也可以用數據庫的同步功能 。若我們的項目使用SQLServer2005進行開發,而且項目中要用到Oracle數據庫中的數據 , 那么又該怎么實現拉?一般來說方案有以下幾種 。
1.分別建立鏈接對數據庫進行操作,SQLServer可以用ADO.NET,操作Oracle可以用OLEDB或者用System.Data.OracleClient(需要添加引用才能用)
這種方案的優點就是簡單,各自寫各自的數據庫操作代碼,缺點就是不能將兩個數據庫中的表直接進行聯合查詢,鏈接Oracle的每臺機器必須安裝OracleClient才可以使用 。
2.使用同義詞操作Oracle數據庫 。
這種方法的具體操作我在以前的文章中已經寫清楚了 , 這樣做一來可以進行表的聯合查詢二來不需要每臺機器都安裝OracleClient,但是還是有一個缺點:效率低,比如對同義詞使用like去查找需要的數據,如果是直接連Oracle數據庫也許只要0.1秒就可以找到答案 , 但是用同義詞可能就要等10秒20秒或更久 。原來SQLServer并不是直接把查詢語句傳遞給Oracle,讓Oracle執行操作 , 而是將所有數據都取到SQLServer服務器上 , 邊取數據邊分析,直到滿足查詢條件為止 。其實這種數據放在兩個服務器上還有一個缺點就是一旦Oracle服務器宕機,即使我們這邊的所有服務器都是好的,那么我們的程序中用到Oracle數據的地方就無法使用 。
3.直接鏈接Oracle數據庫+同義詞+作業+異常跳轉 方式 。
這種方法具體講就是我們的程序直接用OLEDB(OracleClient)鏈接Oracle數據庫,同時SQLServer服務器也建立了同義詞指向Oracle,在SQLServer上建立作業,將同義詞中的數據拷貝到SQLServer服務器的表中 。一旦Oracle宕機,程序中就會捕捉到異常,于是就使用SQLServer中的數據 。這樣做比較復雜,需要一定的編程 , 效率也不是特別高,但是優點也是明細的,平時鏈接Oralce服務器,異常情況下鏈接SQLServer中的備份數據,保證了程序的正常運行 。
4.直接編寫一個程序,以服務或自啟動方式一直運行,每隔一段時間將Oracle數據庫中的數據寫到SQLServer數據庫中 。
這種方法就是編程復雜,具有很大難度 。
5.利用SQLServer2005的復制功能將Oracle數據庫中的數據同步到SQLServer服務器中,程序只操作SQLServer,不鏈接Oracle數據庫 。
這種方法不需要編寫任何代碼 , 由于只對SQLServer進行查詢,所以查詢效率高可以做多表鏈接,開發人員也不需要再裝OracleClient,也不用害怕Oracle服務器宕機導致我們的相關程序無法使用 。優點倒是很多,那么有沒有缺點拉?缺點還是有的,主要是取得的數據不是實時的數據,Oracle那邊的數據更新了 , 我們這邊還有可能是老數據 。
前面的四種方法我就不用多講了,這次主要是講第五種方法的具體實現:
1.安裝SQLServer復制功能 。
在安裝SQLServer數據庫的時候選上“復制”,將“復制”功能安裝到服務器 。微軟說如果第一次安裝的時候沒有裝,以后再想添加該功能只需要運行安裝程序將“復制”選上就可以了,不過說是這么說,我試了幾次都不行,我也不知道怎么回事,為了安裝上復制,所以將SQLServer卸載了,重新安裝!這種方法很笨 , 不過我實現想不出其他辦法了,希望高手指點 。
2.設置Oracle服務器端的權限 。
創建一個用于復制用的用戶,授予下列權限:
CREATE PUBLIC SYNONYM 和 DROP PUBLIC SYNONYM
CREATE PROCEDURE
CREATE SEQUENCE
CREATE SESSION
還必須直接為用戶授予下列權限(不是通過角色):
CREATE ANY TRIGGER 。
CREATE TABLE
CREATE VIEW
同時該用戶還必須對要發布的表所在表空間有UNLIMITED的權限,還要針對每個要用于同步的表設置Select權限 。
3.SQLServer服務器上安裝OracleClient10g
必須安裝了才可以鏈接Oracle服務器 , 不推薦安裝Oracle9i,即使我們要鏈接的Oracle是9i的 。安裝完成以后重啟SQLServer服務器 。用PLSQL或其他工具測試一下是否可以鏈接到Oracle服務器 。
4.設置SQLServer Agent權限
在SQLServer服務器上 新建用戶,將該用戶加為管理員,在“服務”中找到“SQLServer Agent”,將其啟動用戶改為該用戶,重啟該服務 。
5.配置分發
打開ManagementStudio右鍵“復制”節點,選中“配置分發”,按向導一步一步操作,將快照文件夾路徑指定為一個專門的共享文件夾,其他都不用修改,完成配置分發 。
6.添加Oracle發布
右鍵“本地發布”->“新建Oracle發布”,啟動Oracle發布向導 , 添加Oracle服務器,將在Oracle服務器上新建的用戶密碼輸入 , 一直下一步,選快照發布,選中需要發布的表,選中“立即創建快照發布”和“計劃運行快照代理”,計劃時間就自己根據需要設定,“快照代理”選擇“代理服務帳戶”,發布名稱填寫需要的名稱,比如“Test1”,然后點擊完成 。這樣就完成了發布工作 。
7.添加Oracle訂閱
右鍵“本地訂閱”->“新建訂閱”運行向導,選中剛才新建的Test1發布 , 一般選中“推送訂閱” , 指定要訂閱的數據庫(比如:mis),也就是要用來存儲Oracle數據的數據庫 , 訂閱屬性中選中用SQLServer代理用戶運行,代理計劃“連續運行”,初始化時間“立即”,然后創建訂閱完成 。
這個時候我們打開訂閱的數據庫mis,我們可以看到其中添加了Oracle發布出來的表,而且這些內容會按照計劃隔段時間同步Oracle數據一次 。
到此我們的同步完成 。
8.測試是否同步成功
用PLSQL往Oracle中寫入數據,修改數據,刪除數據 , 如果發布時候選中的是每一分鐘運行快照代理一次,那么隔一分鐘后,我們再去打開SQLServer中的表,我們可以看到其中的內容和Oracle一樣進行了變化 。
PS:在“本地發布”下選中我們的發布,右鍵,“查看代理運行狀態”可以看到我們的發布是否成功 。

在VS2010中如何鏈接上SQL SERVER2012 (ODBC方式)代碼連接方法:string strCon="Driver=數據庫提供程序名;Server=數據庫服務器名;Trusted_Connection=yes;Database=數據庫名;";OdbcConnection odbcconn=new OdbcConnection(strCon);連接了之后調用就可以了如果還是不懂 可以找個小例子看下就明白了

jsp中怎么連接sql2008的數據庫啊 , 個數據庫shopsystem,用戶名sa 密碼空 看下提示什么錯誤 再做修改)
<%@ page contentType="text/html;charset=GB2312" language="java" %>
<%@ page import="java.sql.*"%>
<html>
<head><title>JDBC專用驅動程序連接SQL Server</title></head>
<%
Connection conn=null;
try
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
String strConn="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=shopsystem";
String strUser="sa";
String strPassword="";
conn=DriverManager.getConnection(strConn,strUser,strPassword);
out.println("<h2>JDBC專用驅動程序連接數據庫成功!</h2>");
}
catch(ClassNotFoundException e)
{
out.println(e.getMessage());
}
catch(SQLException e)
{
out.println(e.getMessage());
}
finally
{
try
{
if (conn!=null)
conn.close();
}
catch(Exception e){}
}
%>
</html>

c# 相關問題:連接SQL數據庫代碼出錯?。tring strConnection = " Data Source=PCPC-20090625HIOS\SQLEXPRESS 中包含一個轉義字符"\",他會把之后的一個字符組合起來做轉義:\S
你用兩個斜杠試試.
PC-20090625HIOS\\SQLEXPRESS

求java程序連接非本地MySql 數據庫的方法不重復別人說得了.你再看一下你的服務器的配置.有沒有定義地址.如tomcat的config文件夾下的配置文件 。

using (OleDbConnection conn = new OleDbConnection(settings.ConnectionString))看看能有點用嗎

using System;
using System.Collections.Generic;
using System.Text;

using System.Data.OleDb;
using System.Data;
namespace DAL
{
public class DBHelper
{
private string connectionString= @"Provider = Microsoft.Jet.OLEDB.4.0;Data Source = "
+ Application.StartupPath + @"\Data\NMS.mdb";

/// <summary>
/// 執行增刪改操作 返回int 類型
/// </summary>
/// <param name="sql"></param>
/// <param name="para"></param>
/// <returns></returns>
public static int GetScalar(string sql)
{
int result = 0;
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
conn.Open();
OleDbCommand cmd = new OleDbCommand(sql, conn);
result = cmd.ExecuteNonQuery();

conn.Dispose();
conn.Close();
}
return result;
}

c#.NET設計系統,數據庫的問題??本文將詳細介紹如何使用Connection對象連接數據庫 。對于不同的.NET數據提供者 , ADO.NET采用不同的Connection對象連接數據庫 。這些Connection對象為我們屏蔽了具體的實現細節,并提供了一種統一的實現方法 。

Connection類有四種:SqlConnection,OleDbConnection,OdbcConnection和OracleConnection 。

SqlConnection類的對象連接SQL Server數據庫;OracleConnection 類的對象連接Oracle數據庫;

OleDbConnection類的對象連接支持OLE DB的數據庫,如Access;而OdbcConnection類的對象連接任何支持ODBC的數據庫 。與數據庫的所有通訊最終都是通過Connection對象來完成的 。

SqlConnection類

Connection 用于與數據庫“對話” , 并由特定提供程序的類(如 SqlConnection)表示 。盡管SqlConnection類是針對Sql Server的,但是這個類的許多屬性、方法與事件和OleDbConnection及OdbcConnection等類相似 。本章將重點講解SqlConnection特定的屬性與方法 , 其他的Connection類你可以參考相應的幫助文檔 。

注意:使用不同的Connection對象需要導入不同的命名空間 。OleDbConnection的命名空間為System.Data.OleDb 。SqlConnection的命名空間為System.Data.SqlClient 。OdbcConnection的命名空間為System.Data.Odbc 。OracleConnection的命名空間為System.Data.OracleClinet 。

SqlConnection屬性:

屬性 說明
ConnectionString 其返回類型為string,獲取或設置用于打開 SQL Server 數據庫的字符串 。
ConnectionTimeOut其返回類型為int,獲取在嘗試建立連接時終止嘗試并生成錯誤之前所等待的時間 。
Database 其返回類型為string,獲取當前數據庫或連接打開后要使用的數據庫的名稱 。
DataSource 其返回類型為string,獲取要連接的 SQL Server 實例的名稱 。
State 其返回類型為ConnectionState,取得當前的連接狀態:Broken、Closed、Connecting、Fetching或Open 。
ServerVersion 其返回類型為string,獲取包含客戶端連接的 SQL Server 實例的版本的字符串 。
PacketSize 獲取用來與 SQL Server 的實例通信的網絡數據包的大?。ㄒ宰紙諼ノ唬?。這個屬性只適用于SqlConnection類型

SqlConnection方法:

方法 說明
Close() 其返回類型為void,關閉與數據庫的連接 。
CreateCommand()其返回類型為SqlCommand,創建并返回一個與 SqlConnection 關聯的 SqlCommand 對象 。
Open()其返回類型為void,用連接字符串屬性指定的屬性打開數據庫連接

SqlConnection事件:

事件 說明
StateChange當事件狀態更改時發生 。(從 DbConnection 繼承 。)
InfoMessage當 SQL Server 返回一個警告或信息性消息時發生 。

提示:可以用事件讓一個對象以某種方式通知另一對象產生某些事情 。例如我們在Windows系統中選擇“開始”菜單,一旦單擊鼠標時,就發生了一個事件 , 通知操作系統將“開始”菜單顯示出來 。
使用SqlConnection對象連接SQL Server數據庫

我們可以用SqlConnection()構造函數生成一個新的SqlConnection對象 。這個函數是重載的,即我們可以調用構造函數的不同版本 。SqlConnection()的構造函數如下表所示:

構造函數 說明
SqlConnection ()初始化 SqlConnection 類的新實例 。
SqlConnection (String) 如果給定包含連接字符串的字符串 , 則初始化 SqlConnection 類的新實例 。

假設我們導入了System.Data.SqlClient命名空間,則可以用下列語句生成新的SqlConnection對象:

SqlConnection mySqlConnection = new SqlConnection();

程序代碼說明:在上述語法范例的程序代碼中,我們通過使用“new“關鍵字生成了一個新的SqlConnection對象,并且將其命名為mySqlConnection 。

現在我們就可以使用如下兩種方式連接數據庫,即采用集成的Windows驗證和使用Sql Server身份驗證進行數據庫的登錄 。

集成的Windows身份驗證語法范例

string connectionString="server=localhost;database=Northwind;
integrated security=SSPI";

程序代碼說明:在上述語法范例的程序代碼中,我們設置了一個針對Sql Server數據庫的連接字符串 。其中server表示運行Sql Server的計算機名,由于在本書中,ASP.NET程序和數據庫系統是位于同一臺計算機的 , 所以我們可以用localhost取代當前的計算機名 。database表示所使用的數據庫名,這里設置為Sql Server自帶的一個示例數據庫--Northwind 。由于我們希望采用集成的Windows驗證方式 , 所以設置 integrated security為SSPI即可 。

Sql Server 2005中的Windows身份驗證模式如下:



注意:在使用集成的Windows驗證方式時,并不需要我們輸入用戶名和口令,而是把登錄Windows時輸入的用戶名和口令傳遞到Sql Server 。然后Sql Server檢查用戶清單,檢查其是否具有訪問數據庫的權限 。而且數據庫連接字符串是不區分大小寫的 。

采用Sql Server身份驗證的語法范例

string connectionString = "server=localhost;database=Northwind;uid=sa;pwd=sa";

程序代碼說明:在上述語法范例的程序代碼中 , 采用了使用已知的用戶名和密碼驗證進行數據庫的登錄 。uid為指定的數據庫用戶名,pwd為指定的用戶口令 。為了安全起見 , 一般不要在代碼中包括用戶名和口令,你可以采用前面的集成的Windows驗證方式或者對Web.Config文件中的連接字符串加密的方式提高程序的安全性 。

Sql Server 2005中的Sql Server身份驗證模式如下:



如果你使用其他的數據提供者的話,所產生的連接字符串也具有相類似的形式 。例如我們希望以OLE DB的方式連接到一個Oracle數據庫,其連接字符串如下:

string connectionString = "data source=localhost;initial catalog=Sales;
use id=sa;password=;provider=MSDAORA";

程序代碼說明:在上述語法范例的程序代碼中,通過專門針對Oracle數據庫的OLE DB提供程序 , 實現數據庫的連接 。data source 表示運行Oracle數據庫的計算機名,initial catalog表示所使用的數據庫名 。provider表示使用的OLE DB提供程序為MSDAORA 。

Access數據庫的連接字符串的形式如下:

string connectionString = "provider=Microsoft.Jet.OLEDB.4.0;
@”data source=c:\DataSource\Northwind.mdb”;

程序代碼說明:在上述語法范例的程序代碼中 , 通過專門針對Access數據庫的OLE DB提供程序 , 實現數據庫的連接 。這使用的的OLE DB提供程序為Microsoft.Jet.OLEDB.4.0,并且數據庫存放在c:\DataSource目錄下 , 其數據庫文件為Northwind.mdb 。

現在我們就可以將數據庫連接字符串傳人SqlConnection()構造函數,例如:

string connectionString = "server=localhost;database=Northwind;uid=sa;pwd=sa";
SqlConnection mySqlConnection = new SqlConnection(connectionString);

或者寫成

SqlConnection mySqlConnection =new SqlConnection(
"server=localhost;database=Northwind;uid=sa;pwd=sa");

在前面的范例中 , 通過使用“new“關鍵字生成了一個新的SqlConnection對象 。因此我們也可以設置該對象的ConnectionString屬性,為其指定一個數據庫連接字符串 。這和將數據庫連接字符串傳人SqlConnection()構造函數的功能是一樣的 。

SqlConnection mySqlConnection = new SqlConnection();
mySqlConnection.ConnectionString = "server=localhost;database=Northwind;uid=sa;pwd=sa";

注意:只能在關閉Connection對象時設置ConnectionString屬性 。
打開和關閉數據庫連接

生成Connection對象并將其設置ConnectionString屬性設置為數據庫連接的相應細節之后 , 就可以打開數據庫連接 。為此可以調用Connection對象的Open()方法 。其方法如下:

mySqlConnection.Open();

完成數據庫的連接之后,我們可以調用Connection對象的Close()方法關閉數據庫連接 。例如:

mySqlConnection.Close();

下面是一個顯示如何用SqlConnection對象連接Sql Server Northwind數據庫的實例程序,并且顯示該SqlConnection對象的一些屬性 。

范例程序代碼如下:

01 public partial class _Default : System.Web.UI.Page
02 {
03 protected void Page_Load(object sender, EventArgs e)
04 {
05 //建立數據庫連接字符串
06 string connectionString = "server=localhost;database=Northwind;
07 integrated security=SSPI";
08 //將連接字符串傳入SqlConnection對象的構造函數中
09 SqlConnection mySqlConnection = new SqlConnection(connectionString);
10 try
11 {
12 //打開連接
13 mySqlConnection.Open();
14 //利用label控件顯示mySqlConnection對象的ConnectionString屬性
15 lblInfo.Text = "<b>mySqlConnection對象的ConnectionString屬性為:<b>" +
16 mySqlConnection.ConnectionString + "<br>";
17 lblInfo.Text += "<b>mySqlConnection對象的ConnectionTimeout屬性為<b>" +
18 mySqlConnection.ConnectionTimeout + "<br>";
19 lblInfo.Text += "<b>mySqlConnection對象的Database屬性為<b>" +
20 mySqlConnection.Database + "<br>";
21 lblInfo.Text += "<b>mySqlConnection對象的DataSource屬性為<b>" +
22 mySqlConnection.DataSource + "<br>";
23 lblInfo.Text += "<b>mySqlConnection對象的PacketSize屬性為<b>" +
24 mySqlConnection.PacketSize + "<br>";
25 lblInfo.Text += "<b>mySqlConnection對象的ServerVersion屬性為<b>" +
26 mySqlConnection.ServerVersion + "<br>";
27 lblInfo.Text += "<b>mySqlConnection對象的當前狀態為<b>" +
28 mySqlConnection.State + "<br>";
29 }
30 catch (Exception err)
31 {
32 lblInfo.Text = "讀取數據庫出錯";
33 lblInfo.Text += err.Message;
34 }
35 finally
36 {
37 //關閉與數據庫的連接
38 mySqlConnection.Close();
39 lblInfo.Text += "<br><b>關閉連接后的mySqlConnection對象的狀態為:</b>";
40 lblInfo.Text += mySqlConnection.State.ToString();
41 }
42 }
43 }

程序代碼說明:在上述范例的程序代碼中 , 我們利用try catch finally對數據庫連接進行異常處理 。當無法連接數據庫時將拋出異常,并顯示出錯信息,見catch代碼塊所示 。在此程序中,無論是否發生異常,都可以通過finally區塊關閉數據庫的連接,從而節省計算機資源,提高了程序的效率和可擴展性 。

執行結果:



當然,我們還可以采用一種更加簡便的方法來實現上述程序的功能 。這就是將SqlConnection對象包含到using區塊中,這樣程序會自動調用Dispose()方法釋放SqlConnection對象所占用的系統資源 , 無需再使用SqlConnection對象的Close()方法 。

范例程序代碼如下:

01 public partial class _Default : System.Web.UI.Page
02 {
03 protected void Page_Load(object sender, EventArgs e)
04 {
05 string connectionString = "server=localhost;database=Northwind;
06 integrated security=SSPI";
07 SqlConnection mySqlConnection = new SqlConnection(connectionString);
08 using (mySqlConnection)
09 {
10 mySqlConnection.Open();
11 lblInfo.Text = "<b>mySqlConnection對象的ConnectionString屬性為:<b>" +
12 mySqlConnection.ConnectionString + "<br>";
13 lblInfo.Text += "<b>mySqlConnection對象的ConnectionTimeout屬性為<b>" +
14 mySqlConnection.ConnectionTimeout + "<br>";
15 lblInfo.Text += "<b>mySqlConnection對象的Database屬性為<b>" +
16 mySqlConnection.Database + "<br>";
17 lblInfo.Text += "<b>mySqlConnection對象的DataSource屬性為<b>" +
18 mySqlConnection.DataSource + "<br>";
19 lblInfo.Text += "<b>mySqlConnection對象的PacketSize屬性為<b>" +
20 mySqlConnection.PacketSize + "<br>";
21 lblInfo.Text += "<b>mySqlConnection對象的ServerVersion屬性為<b>" +
22 mySqlConnection.ServerVersion + "<br>";
23 lblInfo.Text += "<b>mySqlConnection對象的當前狀態為<b>"+
24 mySqlConnection.State + "<br>";
25 }
26 lblInfo.Text += "<br><b>關閉連接后的mySqlConnection對象的狀態為:</b>";
27 lblInfo.Text += mySqlConnection.State.ToString();
28 }
29 }

程序代碼說明:在上述范例的程序代碼中 , 采用using(mySqlConnection)的形式使得代碼更加簡潔,并且其最大的優點就是無需編寫finally區塊代碼,可以自動關閉與數據庫的連接 。

連接池

打開與關閉數據庫都是比較耗時的 。為此,ADO.NET自動將數據庫連接存放在連接池中 。連接池可以大幅度提高程序的性能和效率,因為我們不必等待建立全新的數據庫連接過程,而是直接利用現成的數據庫連接 。注意,利用Close()方法關閉連接時,并不是實際關閉連接,而是將連接標為未用 , 放在連接池中,準備下一次復用 。

如果在連接字符串中提供相同的細節,即相同的數據庫,用戶名,密碼等等,則可以直接取得并返回池中的連接 。然后可以用這個連接訪問數據庫 。

使用SqlConnection對象時,可以在連接字符串中指定max pool size,表示連接池允許的最大連接數(默認為100),也可以指定min pool size表示連接池允許的最小連接數(默認為0) 。下面的代碼指定了SqlConnection對象的max pool size為10 , min pool size為5 。

SqlConnection mySqlConnection = new SqlConnection("server=localhost;database=Northwind;
integrated security=SSPI;"+"max pool size=10;min pool size=5");

程序代碼說明:在上述范例的程序代碼中,程序最初在池中生成5個SqlConnection對象 。池中可以存儲最多10個SqlConnection對象 。如果要打開新的SqlConnection對象時,池中的對象全部都在使用中,則請求要等待一個SqlConnection對象關閉,然后才可以使用新的SqlConnection對象 。如果請求等待時間超過ConnectionTimeout屬性指定的秒數,則會拋出異常 。

下面通過一個程序來顯示連接池的性能優勢 。在應用此程序過程我們要先引用System.Data.SqlClinet和System.Text命名空間 。

范例程序代碼如下:

01 public partial class _Default : System.Web.UI.Page
02 {
03 protected void Page_Load(object sender, EventArgs e)
04 {
05 //設置連接池的最大連接數為5,最小為1
06 SqlConnection mySqlConnection =new SqlConnection(
07 "server=localhost;database=Northwind;integrated security=SSPI;"+
08 "max pool size=5;min pool size=1");
09 //新建一個StringBuilder對象
10 StringBuilder htmStr = new StringBuilder("");
11 for (int count = 1; count <= 5; count++)
12 {
13 //使用Append()方法追加字符串到StringBuilder對象的結尾處
14 htmStr.Append("連接對象 "+count);
15 htmStr.Append("<br>");
16 //設置一個連接的開始時間
17 DateTime start = DateTime.Now;
18 mySqlConnection.Open();
19 //連接所用的時間
20 TimeSpan timeTaken = DateTime.Now - start;
21 htmStr.Append("連接時間為 "+timeTaken.Milliseconds+"毫秒");
22 htmStr.Append("<br>");
23 htmStr.Append("mySqlConnection對象的狀態為" + mySqlConnection.State);
24 htmStr.Append("<br>");
25 mySqlConnection.Close();
26 }
27 //將StringBuilder對象的包含的字符串在label控件中顯示出來
28 lblInfo.Text = htmStr.ToString();
29 }
30 }

程序代碼說明:在上述范例的程序代碼中,我們將在連接池中重復5次打開一個SqlConnection對象,DateTime.Now表示當前的時間 。timeTaken表示從連接開始到打開連接所用的時間間隔 。可以看出,打開第一個連接的時間比打開后續連接的時間要長 , 因為第一個連接要實際連接數據庫 。被關閉之后,這個連接存放在連接池中 。再次打開連接時,只要從池中直接讀取即可,速度非常快 。

提示:String 對象是不可改變的 。每次使用 System.String 類中的方法之一時 , 都要在內存中創建一個新的字符串對象,這就需要為該新對象分配新的空間 。在需要對字符串執行重復修改的情況下,與創建新的 String 對象相關的系統開銷可能會非常昂貴 。如果要修改字符串而不創建新的對象,則可以使用 System.Text.StringBuilder 類 。例如,當在一個循環中將許多字符串連接在一起時,使用 StringBuilder 類可以提升性能 。Append 方法可用來將文本或對象的字符串表示形式添加到由當前 StringBuilder 對象表示的字符串的結尾處 。

在ASP.NET 2.0中,使用了一種在運行時解析為連接字符串值的新的聲明性表達式語法,按名稱引用數據庫連接字符串 。連接字符串本身存儲在 Web.config 文件中的 <connectionStrings> 配置節下面,以便易于在單個位置為應用程序中的所有頁進行維護 。

范例程序代碼如下:

<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="Pubs" connectionString="Server=localhost;
Integrated Security=True;Database=pubs;Persist Security Info=True"
providerName="System.Data.SqlClient" />
<add name="Northwind" connectionString="Server=localhost;
Integrated Security=True;Database=Northwind;Persist Security Info=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<pages styleSheetTheme="Default"/>
</system.web>
</configuration>

程序代碼說明:在上述范例的程序代碼中,我們在Web.Config文件中的<connectionStrings> 配置節點下面設置了兩個數據庫連接字符串 , 分別指向pubs和Northwind兩個示例數據庫 。注意,在2.0中引進了數據源控件,例如SqlDataSource 控件,我們可以將SqlDataSource 控件的 ConnectionString 屬性被設置為表達式 <%$ ConnectionStrings:Pubs %>,該表達式在運行時由 ASP.NET 分析器解析為連接字符串 。還可以為SqlDataSource 的 ProviderName 屬性指定一個表達式,例如 <%$ ConnectionStrings:Pubs.ProviderName %> 。其具體的用法和新特征將在以后的章節進行詳細的介紹 。現在有個基礎的了解即可 。

當然 , 我們也可以用下面的方式從配置文件直接讀取數據庫連接字符串 。首先我們需要引用using System.Web.Configuration命名空間,該命名空間包含用于設置 ASP.NET 配置的類 。

string connectionString =ConfigurationManager.ConnectionStrings["Northwind"].ConnectionString;

程序代碼說明:在上述范例的程序代碼中,我們可以利用ConnectionStrings["Northwind"]讀取相應的Northwind字符串 。同理以可以利用ConnectionStrings["Pubs"]讀取相應的Pubs字符串 。

發布c#項目數據庫路徑的問題我的處理是:

程序運行目錄(就是exe所在目錄)

數據庫路徑:"程序運行目錄/Database/db.mdb"

Connection連接數據庫的字符串寫成:Application.StartupPath+"/Database/db.mdb"

使用C#連接Access數據庫時 , 出現問題如下:D:\test\test\test.mdb 改成 D:\\test\\test\\test.mdb試試

做C#.net 項目,如何使用app.config 文件來連接數據庫,而不是反復的使用數據庫連接代碼(數據庫為Access)包含命名空間System.Configuration
ConfigurationManager.ConnectionStrings("ButterflyFinance.Properties.Settings.ButterflyConnectionString").ConnectionString可取到

OleDbConnection con = conn(FileName); con.Open(); 讀取EXCEL文件的時候出現了這個錯誤 。。求指點 。。連接字符串錯誤,或者是你的系統沒有裝Excel的OleDB驅動

C# 數據庫問題 using System.Data; using System.Data.OleDb;SQL Server數據庫 和OleDb區別? 答案是沒區別,查詢 , 執行都是一樣的 , 只是針對與不同的數據庫引擎而已?。?br>(string strSQL) 只是一個形參而已 , 代表你需要執行的sql語句,是你自己編寫這個語句,然后當作參數傳到方法里面去執行就可以了,你調試一下就知道了?。。?

c#程序出錯:“System.Data.OleDb.OleDbException”類型的未經處理的異常出現在 System.Data.dll 中 。你這樣麻煩了 , C#有個表格控件,直接自動判斷行數,不用你每次new row() , 很方便的,你找著

C# 通過System.Data.OleDb實現對access表格里面不同的表的讀取你不同的表里面都有一個唯一的且通用的鍵嗎?
比如:ID
如果有你就可以用join子句連接查詢 。像這樣:
select tb_liver.liver, tb_eye.eye, tb_hand.hand
from tb_liver
inner join tb_eye on tb_liver.id=tb_eye.id
inner join tb_hand on tb_liver.id=tb_hand.id
where tb_liver.id=...
...

如果你只是想在不同的表里面查不同的內容,之間沒有鍵相互連接,那么你簡單地open一個oledbconnection,然后一個一個地查詢就行了,不需要關閉前一個表,最后把這個connection給close就可以了 。因為你是連接到這個MDB的 , 不是連接到表的,所以也不存在關閉表的問題

c# winform 里面調用dll(System.Data.SQLite.DLL)的問題不需要啦,你只要判斷當前是32還是64位,就可以了 。
if(Detect32or64()=="32")
{
// do 32bit things.
}
else if(Detect32or64()=="64")
{
//do 64bit things
}
/////////////////////////////判斷方法(受操作系統和CPU雙重影響)
public static string Detect32or64()
{
ConnectionOptions oConn = new ConnectionOptions();
System.Management.ManagementScope oMs = new System.Management.ManagementScope("\\\\localhost", oConn);
System.Management.ObjectQuery oQuery = new System.Management.ObjectQuery("select AddressWidth from Win32_Processor");
ManagementObjectSearcher oSearcher = new ManagementObjectSearcher(oMs, oQuery);
ManagementObjectCollection oReturnCollection = oSearcher.Get();
string addressWidth = null;

foreach (ManagementObject oReturn in oReturnCollection)
{
addressWidth = oReturn["AddressWidth"].ToString();
}

return addressWidth;
}

System.data.oleDb.OleDbException:[DENETLIB][ConnectionOpen(Connect()).]SQL Server不存在或拒絕訪問這是未能正常連接到指定數據的錯誤,可以先檢查一下數據庫是否處理于正常狀態,另外,你的連接字符串中,如數據庫名,用戶名及密碼等是否正確都要檢查一下 。

private static OleDbConnection conn = new *** 出異常你特喜歡靜態嗎?這個層用靜態,除了減慢程序,影響性能,還有個問題就是,報你意想不到的錯誤 。