c#.NET 串連 SQLServer 的代碼和遇到的問題

來源:互聯網
上載者:User

首先申明,本人編程菜鳥,本文只是自己的一個總結,各位看客莫笑!

今天閑來無事,寫了一段C#.NET 串連 SQLServer 的代碼, 寫的過程中尋找了一些資料,並遇到了一些問題,

 

閑話少說,先上代碼。

 

 

using System;<br />using System.Collections.Generic;<br />using System.Text;<br />using System.Data;<br />using System.Data.SqlClient;<br />namespace Test<br />{<br /> public class DBConnection<br /> {<br /> public static void getDBData(out List<string[]> rsltList)<br /> {<br /> rsltList = new List<string[]>();<br /> SqlConnection objConnection = null;<br /> try<br /> {<br /> string strConnection = "Persist Security Info=False;user id=myID;password=myPWD;initial catalog=northwind;Server=mySQLServer;Connect Timeout=30";<br /> // myID就是使用者名稱<br /> // myPWD就是密碼<br /> // northwind為你要使用的資料來源,也就是說你要的資料庫的名稱·<br /> // 資料庫所在伺服器(可以寫IP地址)<br /> objConnection = new SqlConnection(strConnection);<br /> objConnection.Open();<br /> // table_a為檢索的表<br /> SqlCommand objsql = new SqlCommand("select * from table_a");<br /> objsql.Connection = objConnection;<br /> SqlDataReader myreader = objsql.ExecuteReader();<br /> while (myreader.Read())<br /> {<br /> string[] str = new string[6];<br /> // 下面一堆為table_a表裡面的欄位<br /> str[0] = myreader.GetString(myreader.GetOrdinal("BookNumber"));<br /> str[1] = myreader.GetString(myreader.GetOrdinal("BookName"));<br /> str[2] = myreader.GetString(myreader.GetOrdinal("Publisher"));<br /> str[3] = myreader.GetString(myreader.GetOrdinal("Buyday"));<br /> str[4] = myreader.GetString(myreader.GetOrdinal("Country"));<br /> str[5] = myreader.GetString(myreader.GetOrdinal("Field"));<br /> rsltList.Add(str);<br /> }<br /> }<br /> finally<br /> {<br /> objConnection.Close();<br /> }<br /> }<br /> }<br />} 

 

1,string strConnection = "Persist Security Info=False;user id=myID;password=myPWD;initial catalog=northwind;Server=mySQLServer;Connect Timeout=30";

這一段應該就是串連DB之前的一些設定了。
包括了使用者名稱,密碼,資料庫名,伺服器位址等等。

如果你的SQL Server設定為Windows登入,那麼在這裡就不需要使用“user id”和“password”這樣的方式來登入,而需要使用“Trusted_Connection=SSPI”來進行登入。


代碼如下: string strConnection = "Persist Security Info=False;Integrated Security=SSPI;database=northwind;server=mySQLServer;Connect Timeout=30";

PS:Persist Security Info=False 是什麼意思?(具體上google看看)

Persist Security
Info屬性的意思是表示是否儲存安全資訊,其實可以簡單的理解為"ADO在資料庫連接成功後是否儲存密碼資訊",

True表示儲存,False表示不儲存。

 

2,寫代碼中遇到了2個問題

a問題:

System.InvalidOperationException
是 ServerVersion = 'objConnection.ServerVersion' 的例外。
具體內容是: 操作無效,接續處於關閉狀態。

但是這個exception沒有被throw出來,等到objConnection.Open() 被執行之後,
ServerVersion 就顯示出來了。
仔細想想,這個應該不算exception吧?
因為你都還沒有open,人家當然會報 “操作無效,接續處於關閉狀態”這個“警告”啦!(猜想,呵呵,不要砸我!)

 

b問題:

ExecuteReader: Connection 屬性沒有被初期化

於是加上: objsql.Connection = objConnection

問題得以解決。

仔細想想,不然一個sqlcommand怎麼知道我用的是哪個connection,取的是哪個DB啊?!

 

有時候代碼看著挺簡單,可是就這麼幾句代碼寫起來還碰到好幾個問題呢。

只是果然是在於積累啊!

以後就記住了!

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.