[C#]ASP.NET與資料庫連結

[C#]ASP.NET與資料庫連結

通常在寫網頁時,都會需要與資料庫連結,並且從中取出資料或查詢比對等,

接下來是說明ASP.NET該如何與資料庫進行連結。

 

首先,與資料庫連結,就最先想到必須要跟網頁說明與哪個資料庫連結,

並且資料庫使用者的帳號、密碼、位置等資訊必須說明,

通常在設定資料庫連結時大多網站都會介紹如何從xxxxx.aspx.cs的網頁中去連結,

但是由於自己在開發時常常遇到一件事情,就是資料庫的使用者名稱、密碼會更改,

雖然說一般而言不太可能會去更改...但有時網頁並非自己開發時,就會常發生,

而如果是在xxxxx.aspx.cs中建立資料庫連結時,會因為必須連結的頁面很多,

因此常常導致一改就要改很多頁面的窘境,因此我建議在Web.config中建立資料庫連結語法,

這樣的好處是,如果需要修改使用者帳號、密碼,甚至資料庫名稱時只需要修改一次,

另外當有開發到較大的網站時,通常使用者權限會因頁面權限的不同而有所不同,

而此種方法還可以在同一個地方管理所有連結語法。

 

接下來直接說明語法,而這邊也一併說明當使用的是MySQL與MSSQL時的差別,

首先是Web.config的連結與法設定,

檔案名稱:Web.config


	<add name="MSSQL_DBconnect" connectionString="Data Source = 127.0.0.1 ;Initial Catalog =DB_Name;User ID =DB_Username;Password = DB_Password" providerName="System.Data.SqlClient"/>
	<add name="MySQL_DBconnect" connectionString="server=127.0.0.1;User Id=DB_Name;password=DB_Password;Persist Security Info=True;database=DB_Name;CHARSET=big5" providerName="MySql.Data.MySqlClient"/>
</connectionStrings>

以上的name欄位中分別有MSSQL_DBconnect及MySQL_DBconnect兩個名稱,

分別就是說明MSSQL及MySQL連結的語法,另外使用MySQL時必須自行匯入MySQL的dll檔

另外,語法中的127.0.0.1請修改為資料庫位置(正常初學者資料庫及開發環境相同),

DB_Username、DB_Password、DB_Name請依照自己的設定做更正。

 

接下來,就是說明該如何在xxxxx.aspx.cs套用Web.config的連結與法了。

在想要連結資料庫的地方設定增加語法,


using System.Data.SqlClient;
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["MSSQL_DBconnect"].ConnectionString);
//MySQL連結:
using MySql.Data.MySqlClient;
MySqlConnection conn = new MySqlConnection(ConfigurationManager.ConnectionStrings["MySQL_DBconnect"].ConnectionString);

其中的MySQL_DBconnect與MSSQL_DBconnect就是對應到Web.config中所新增的名稱了。

這樣就可以將ASP.NET連結至資料庫了。

 

接下來,以一個簡單的例子來讀取資料庫中的一筆資料,


SqlDataReader reader;	//宣告一個DataReader
SqlConnection connStr = new SqlConnection(ConfigurationManager.ConnectionStrings["MSSQL_connect"].ConnectionString);
String select = "select * from USER where Name = God";	//宣告SQL語法的字串,這邊可依照自行需求修改
connStr.Open();	//開啟資料庫的連結
SqlCommand cmd = new SqlCommand(select, connStr);	//宣告SqlCommand並將SQL語法及連結語法帶入
reader = cmd.ExecuteReader();	//使用SqlCommand的ExecuteReader()方法,
				//ExecuteReader()為查詢時使用,如要刪除、修改、新增,須改為ExecuteNonQuery()方法
while (reader.Read())	//使用無限迴圈將SQL語法查詢的結果每筆查閱一次
{
	String NameStr = (String)reader["Name"];//將資料庫中Name欄位存放於NameStr字串中
	int IDint = (int)reader["ID"];		//將資料庫中ID欄位存放於IDint整數中,不同型態請自行更改
					//這邊建議欄位與字串相同,方便管理,怕人搞混所以這邊用不同名稱
}
connStr.Close();	//關閉資料庫的連結


//MySQL語法:說明與上面MSSQL說明相同,但通常Sql的字眼會變成MySql
MySqlDataReader reader;
MySqlConnection connStr = new MySqlConnection(ConfigurationManager.ConnectionStrings["MySQL_connect"].ConnectionString);
String select = "select * from USER where Name = God";
connStr.Open();
MySqlCommand cmd = new MySqlCommand(select, connStr);
reader = cmd.ExecuteReader();
while (reader.Read())
{
	String Name = (String)reader["Name"];
	int IDint = (int)reader["ID"];
}
connStr.Close();

上面例子中我將字串及整數宣告在迴圈內,所以只有迴圈內可使用該字串及整數,

所以有不同需求的請自行更改。

由於例子中SQL語法已針對特定Name篩選,如果有不同的需求,建議可以在迴圈內用if判斷篩選

 

※以上如有錯字或錯誤請告知,謝謝。