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(); } }
留言
張貼留言