C# 連結資料庫及Excel方法
連結資料庫的語法挺好理解的
一、必須要有資料庫檔案
二、資料庫檔案要有資料
(第1跟第2點,因為是老師給我們的檔案,不曉得會不會有版權問題,所以不在此提供)
三、建起資料庫,並且可以連線
從第三點開始:
由於會使用到SQL Server,所以先創建SQLAdmin及SQLuser這2個帳號
進入SQL Server輸入指令:
完成後,前置作業就算ok了,進SQLServer測試一下連線:
測試若連不上,可能是SQLServer Management Studio沒有用管理者權限開啟
在開始→所有程式→Microsoft SQL Server 2012→ SQL Server Management Studio按右鍵
選擇相容性→特殊權限等級裡打勾應該就可以了
接著要在程式中進行調用,用老師的比喻就是:
資料庫是座保護良好的城池,裡面有很多很多的資料
要進去撈東西一定要有中間的構連,而這橋梁以下會說明3種
不多做論述,只說說大概差別:
一、OleDb MicroSoft因應物件化所製定的通路橋梁
二、Odbc MicroSoft主導的標準開啟橋梁方法,java也可用
三、SqlClient MicroSoft針對SQL Server最佳化的通路橋梁
以下的程式碼會各別展示這3種,除了構連SQL Server外
還會連接Access及Excel這2種檔案。
一、必須要有資料庫檔案
二、資料庫檔案要有資料
(第1跟第2點,因為是老師給我們的檔案,不曉得會不會有版權問題,所以不在此提供)
三、建起資料庫,並且可以連線
從第三點開始:
由於會使用到SQL Server,所以先創建SQLAdmin及SQLuser這2個帳號
進入SQL Server輸入指令:
USE [master] GO EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'LoginMode', REG_DWORD, 2 GO EXEC sp_attach_db 中文北風,'C:\Data\SQL\中文北風.mdf','C:\Data\SQL\中文北風_log.ldf' GO --將「中文北風」的mdf及ldf檔案附加 EXEC sp_attach_db 練練,'C:\Data\SQL\練練.mdf','C:\Data\SQL\練練_log.ldf' GO --將「練練」的mdf及ldf檔案附加 CREATE LOGIN SQLAdmin WITH PASSWORD='1234' GO EXEC sp_addsrvrolemember 'SQLAdmin','sysadmin' GO CREATE LOGIN SQLUser WITH PASSWORD='1234' GO USE 中文北風 CREATE USER SQLUser GO EXEC sp_addrolemember 'db_datareader','SQLUser' GO USE 練練 CREATE USER SQLUser GO EXEC sp_addrolemember 'db_datareader','SQLUser' GO
完成後,前置作業就算ok了,進SQLServer測試一下連線:
測試若連不上,可能是SQLServer Management Studio沒有用管理者權限開啟
在開始→所有程式→Microsoft SQL Server 2012→ SQL Server Management Studio按右鍵
選擇相容性→特殊權限等級裡打勾應該就可以了
接著要在程式中進行調用,用老師的比喻就是:
資料庫是座保護良好的城池,裡面有很多很多的資料
要進去撈東西一定要有中間的構連,而這橋梁以下會說明3種
不多做論述,只說說大概差別:
一、OleDb MicroSoft因應物件化所製定的通路橋梁
using System.Data.OleDb;
using System.Data.Odbc;
using System.Data.SqlClient;
以下的程式碼會各別展示這3種,除了構連SQL Server外
還會連接Access及Excel這2種檔案。
1.OleDb連結Access
private void button1_Click(object sender, EventArgs e)
{
OleDbConnection cnn = new OleDbConnection();
cnn.ConnectionString = @"Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:\資料庫檔\北風A.mdb";
//這就像通關密碼,正確才給過
try
{
cnn.Open();
MessageBox.Show("連線Access成功!");
}
catch (Exception ex)
{
MessageBox.Show("連線Access出問題!");
}
finally
{
cnn.Close();
}
}
2.OleDb連結Excel
private void button2_Click(object sender, EventArgs e)
{
//office2003前的Excel版本用這個連接
String cnnS = @"Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:\資料庫檔\資料.xls;";
cnnS += "Extended Properties=\"EXCEL 8.0;HDR=YES\"";
//office2007後的Excel版本用這個連接,若連接不上,請找AccessDatabaseEngine去下載引擎
//String cnnS = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\資料庫檔\資料(新).xlsx;";
//cnnS += "Extended Properties=\"EXCEL 12.0;HDR=YES\"";
OleDbConnection cnn = new OleDbConnection(cnnS);
try
{
cnn.Open();
MessageBox.Show("連線Excel成功!");
}
catch (Exception ex)
{
MessageBox.Show("連線Excel出問題!");
MessageBox.Show(ex.ToString());
}
finally
{
cnn.Close();
}
}
3.Odbc連結Access:
private void button3_Click(object sender, EventArgs e)
{
OdbcConnection cnn = new OdbcConnection();
cnn.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};" +
@"DBQ=C:\資料庫檔\北風A.mdb;" +
"UID=;" +
"PWD=;";
try
{
cnn.Open();
MessageBox.Show("連線Access成功!");
}
catch (Exception ex)
{
MessageBox.Show("連線Access出問題!");
}
finally
{
cnn.Close();
}
}
4.Odbc連結Access並設定DSN:
private void button4_Click(object sender, EventArgs e)
{
OdbcConnection cnn = new OdbcConnection();
//用DSN連線時,請務必記得在控制台→系統管理工具→ODBC資料來源中設定
//若設定好仍連不上,有可能要找AccessDatabaseEngine去下載引擎
cnn.ConnectionString = "DSN=kissMyAss;" +
"UID=;" +
"PWD=;";
try
{
cnn.Open();
MessageBox.Show("連線Access成功!");
}
catch (Exception ex)
{
MessageBox.Show("連線Access出問題!");
}
finally
{
cnn.Close();
}
}
5.SQLServr專用的SqlClient:
private void button5_Click(object sender, EventArgs e)
{
SqlConnection sqlCnn = new SqlConnection();
//windows驗證,只能在windows的作業系統下使用
//sqlCnn.ConnectionString = "Server = localhost;Database =中文北風;Integrated Security=true;";
//使用者帳號密碼驗證
sqlCnn.ConnectionString = "Server = localhost;Database =中文北風;UID =SQLAdmin;PWD=1234";
try
{
sqlCnn.Open();
MessageBox.Show("連線SQLServer成功!");
}
catch (Exception ex)
{
MessageBox.Show("連線SQLServer出問題!");
}
finally
{
sqlCnn.Close();
}
}
6.SqlClient獨特的SqlConnectionStringBuilder:
private void button6_Click(object sender, EventArgs e)
{
SqlConnection sqlCnn = new SqlConnection();
//透過SqlConnectionStringBuilder方便連接!
//其他oledb、odbc都有其自有的StringBuilder,但方便性沒SQL這麼好
SqlConnectionStringBuilder sqlsb =new SqlConnectionStringBuilder();
sqlsb.DataSource = "localhost";
sqlsb.InitialCatalog = "中文北風";
sqlsb.IntegratedSecurity = false;
sqlsb.UserID = textBox1.Text;
sqlsb.Password = textBox2.Text;
sqlCnn.ConnectionString= sqlsb.ConnectionString;
try
{
sqlCnn.Open();
MessageBox.Show("連線SQLServer成功!");
}
catch (Exception ex)
{
MessageBox.Show("連線SQLServer出問題!");
}
finally
{
sqlCnn.Close();
}
}


留言
張貼留言