[轉載]原文出處http://blog.163.com/ny_lonely/blog/static/188924273201161112931892/
利用VS.NET開發平台進行開發的時候將會經常遇到要和數據庫打交道,存取數據。這就涉及到和數據庫的連接問題,.NET開發平台為我們提供了一種簡單的方式來定義和數據庫連接的字符串。這就是在Web.Config文件中添加連接字符串。由於在開發中多次遇到這個問題,特將此記錄下來。
首先打開Web.Config文件,定位到<configuration>標簽下面的<configSections>節,在其中找到<appSettings>標簽,連接字符串的定義主要是在這個標簽下進行定義。好了,現在我們對這個標簽進行擴展,如下所示:
<appSettings>
<add key ="connectionStrings" value="Data Source=LSGXPT_132.1.191.5;User ID=lsgxpt;Password=lsgxpt"/>
</appSettings>
其中,key的值connectionStrings代表字符串的名稱,Value中Data Source代表數據庫的實例名,User ID和Password分別代表用戶名和密碼。
如果有多個數據庫的連接,還可以在<appSettings>標簽之下添加多個<add .......>節。
這樣只需在配置文件中定義一次就可以在之后的數據庫存取中多次重復利用這個設置。
組后要做的工作就是在程序中對其進行引用,以Oracle為例,如下:
public partial class WebUserControl2 : System.Web.UI.UserControl
{
string oraConnectionStr = System.Configuration.ConfigurationManager.AppSettings["connectionStrings"];//引用配置文件中定義的連接字符串
private DataTable common(string sqlStr, string connectionStr)
{
System.Data.OracleClient.OracleConnection conn = new System.Data.OracleClient.OracleConnection(connectionStr);
conn.Open();
System.Data.OracleClient.OracleDataAdapter dataAdapter = new System.Data.OracleClient.OracleDataAdapter(sqlStr, conn);//sqlStr為自定義要執行的SQL語句 System.Data.DataTable mydt = new System.Data.DataTable();
dataAdapter.Fill(mydt);
conn.Close();
return mydt;
}
}
2.代碼連接。
-
用C#.NET連接數據庫可以有Access,SQL Server,Oracle,還有Excel等很多,C#.NET連接不同的數據庫有不同的方法,不一樣的地方就是導入的命名空間不同,這里將介紹C#.NET連接數據庫的不同類型。
C#是一個語言,ASP.NET是一個平台,上面支持用C#或者VB.NET寫代碼。連接Access,SQL Server,Oracle,還有Excel數據庫,是大家在日常開發中經常會碰到的情況。
和連接數據庫的字符串不同,首先說下命名空間的導入,大部分數據庫在導入了下面的命名空間后就可以了(包括下面提到的SQL Server數據庫)
using System.Data.OleDb;
要是使用SQL Server的數據庫,C#.NET提供了單獨的連接方法使其能夠更加快的與數據庫進行連接,
導入方法如下:
using System.Data.SqlClient;(SQL Server)
再就是連接數據庫所需要的連接字符串(就是變量strConnection),它指定了要使用的數據提供者和要使用的數據源.
C#連接連接Excel
- string path = "c:\book1.xls";
- string strConnection = "provider=microsoft.jet.oledb.4.0;data source=" + path + ";extended properties=excel 8.0;";
- string sql = "select * from [sheet1$]";
- OleDbConnection objConnection = new OleDbConnection(strConnection);
"c:\book1.xls "文件的路徑
"provider=microsoft.jet.oledb.4.0"是指數據提供者,這里使用的是Microsoft Jet引擎,也就是excel中的數據引擎,asp.net就是靠這個和excel的數據庫連接的.
"data source"是指明數據源的位置
"[sheet1]"sheet1為excel里標的名稱,用法:[name]"sheet1為excel里標的名稱,用法:[name]
C#連接連接Access
- string strConnection="Provider=Microsoft.Jet.OleDb.4.0;";
- strConnection+=@"Data Source=C:\Northwind.mdb";
- OleDbConnection objConnection=new OleDbConnection(strConnection);
- ...
- objConnection.Open();
- ..
- objConnection.Close();
" Provider=Microsoft.Jet.OleDb.4.0;"是指數據提供者,這里使用的是Microsoft Jet引擎,也就是Access中的數據引擎,asp.net就是靠這個和Access的數據庫連接的.
"Data Source=C: \Northwind.mdb"是指明數據源的位置,他的標准形式是"Data Source=MyDrive:MyPath\MyFile.MDB".
" OleDbConnection objConnection=new OleDbConnection(strConnection);"這一句是利用定義好的連接字符串來建立了一個鏈接對象,以后對數據庫的操作我們都要和這個對象打交道.
"objConnection.Open();"這用來打開連接.至此,與Access數據庫的連接完成.
" objConnection.Close();"得到數據或是修改數據后,一定要關閉數據庫連接
C#.NET連接數據庫附錄:
1.要注意連接字符串中的參數之間要用分號來分隔.
2.如果要連接的數據庫文件和當前文件在同一個目錄下,還可以使用如下的方法連接:
strConnection+="Data Source=";
strConnection+=MapPath("Northwind.mdb");
3. "+="后面的"@"符號是防止將后面字符串中的"\"解析為轉義字符.
C#連接SQL Server
- string strConnection="uid=sa; password=; ";
- strConnection+="initial catalog=Northwind;Server=YourSQLServer;";
- strConnection+="Connect Timeout=30";
- SqlConnection objConnection=new SqlConnection(strConnection);
- objConnection.Open();
- objConnection.Close();
"uid=sa":連接數據庫的用戶名為sa.
"password=":連接數據庫的驗證密碼為空.他的別名為"pwd",所以我們可以寫為"pwd=".
"initial catalog=Northwind":使用的數據源為"Northwind"這個數據庫.他的別名為"Database",本句可以寫成"Database=Northwind".
"Server=YourSQLServer":使用名為"YourSQLServer"的服務器.他的別名為"Data Source","Address","Addr".
" Connect Timeout=30":連接超時時間為30秒.(根據情況添加)
C#.NET連接數據庫附錄:
1.你的SQL Server必須已經設置了需要用戶名和密碼來登錄,否則不能用這樣的方式來登錄.如果你的SQL Server設置為Windows登錄,那么在這里就不需要使用"uid"和"password"這樣的方式來登錄,而需要使用"Trusted_Connection=SSPI"來進行登錄.
2. 如果使用的是本地數據庫且定義了實例名,則可以寫為"Server=(local)\實例名";如果是遠程服務器,則將"(local)"替換為遠程服務器的名稱或IP地址.