<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ado.net提供了對c#連接數據庫的支持,而sql server作為各大數據庫中的其中一員對ado.net最友好。 ###起步 一、下載并安裝sql server 本人安裝的是sql server2008r x64 中文版,可自行百度去下載并安裝,無需任何注意事項。 二、導入sql server到實際項目中 1、打開vs,創建一個項目,該實例創建的是控制臺項目 ![](https://box.kancloud.cn/5aaa8132874826a08ea986b9aff221f9_711x410.png) ![](https://box.kancloud.cn/1607901c53f5136c44e344e522349f73_1294x474.png) 2、在"項目"上單擊右鍵選擇新建項,在彈出的框中選擇“基于服務的數據庫” ![](https://box.kancloud.cn/455e82593c9dd8a4de0b550d99ec5998_1304x596.png) 3、選擇數據集并點擊下一步 ![](https://box.kancloud.cn/d53cd3d41f290f802c2f5bc504f10715_661x592.png) 4、點擊完成即可,你會發現解決方案中多了一個.mdf的文件 ![](https://box.kancloud.cn/33845933cd15128dc10f42096b205b4d_381x333.png) 我們點擊服務器資源管理器會看到整個數據庫的信息 ![](https://box.kancloud.cn/8a3fd666d7954b9be24c535bb0313e60_393x433.png) 5、下面來創建新表 右鍵單擊“表”文件夾選擇添加新表,在彈出的選項卡內可以進行建表的操作。 在名稱前面一格右鍵可以設置主鍵外鍵等 ![](https://box.kancloud.cn/d0cee72eaf22b1193bc121569c7842b5_584x177.png) 點擊每一列在右下角都會有該列的詳細信息,按規范來講每個表都應該有id列,我推薦將id設為標識(自增),默認增量是1。為什么這么做?因為id往往作為一個表的主鍵,通常也是其他表的外鍵,將它設為自增后我們在插數據的時候不需要關系id,它自己會隨著數據的增多而自增 ![](https://box.kancloud.cn/456f4fa487a52d99551dbf365034cf96_404x293.png) 6、完成 在這里可以把Table替換成自己需要的表名(這里有個坑,先記一下) ![](https://box.kancloud.cn/0386600f5e024112502306a9f28b5e1e_352x173.png) 建表完畢后,點擊左上角的更新,更新數據庫,然后刷新一下數據庫,就可以看到表已經新建 ![](https://box.kancloud.cn/9b5706054fc9f5142cc175597489d47a_376x336.png) 三、編寫代碼 1、右鍵單擊“引用”,選擇添加引用,選中System.Configuration,點擊確定 2、將下面三個引用添加到最上面 ``using System.Data; using System.Data.SqlClient; using System.Configuration;`` 3、鏈接數據庫 這里先說一個坑,在連接數據庫之前必須輸入一下代碼,否則在查看數據庫數據的時候會報“sql server版本不兼容”的問題,因為存在控制臺應用中數據庫的鏈接路徑的bug,聽說asp.net web項目不會出現這種問題,不過我還沒試,為了以防萬一還是先寫上吧 ~~~ string dataDir = AppDomain.CurrentDomain.BaseDirectory; if (dataDir.EndsWith(@"\bin\Debug\") || dataDir.EndsWith(@"\bin\Release")) { dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName; AppDomain.CurrentDomain.SetData("DataDirectory", dataDir); } ~~~ 4、創建數據庫實例 ~~~ string strConnection = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True"; ~~~ 上面那一串字符串是哪來的?我們打開App.config配置文件,add name就是我們剛剛導入數據庫的時候自動添加的。name就是這一整串字符串的名字,稍后會用到。connectionString就是記錄了鏈接數據庫的各種信息,我們把connectionString里面的內容復制一下放到一個字符串中,也就是上面的strConnection,記得加上一個@,這樣遇到特殊字符"\"就不必額外轉義了 ~~~ <connectionStrings> <add name="str" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionStrings> ~~~ 5、鏈接數據庫,SqlConnection就是數據庫實例,它接收一個字符串 ~~~ SqlConnection objConnection = new SqlConnection(strConnection); ~~~ 6、打開鏈接 ~~~ objConnection.Open(); ~~~ 7、創建一個數據庫的查詢對象,用于攜帶sql語句 ~~~ SqlCommand sqlc = objConnection.CreateCommand(); ~~~ 8、添加sql語句(注意,如果要插入的是字符串要用單引號括起來,因為整個sql語句本身就是字符串,字符串中的字符串用的是單引號) ~~~ sqlc.CommandText = "Insert into text(name,age) values ('qinchuan',22)"; ~~~ 9、執行該sql語句(像插入刪除這類不反回結果的操作使用ExecuteNonQuery方法,也就是非查詢語句) ~~~ sqlc.ExecuteNonQuery(); ~~~ 10、現在來測試一下,點擊運行,運行結束后在“服務器資源管理器”中找到剛剛操作的表,右鍵單擊“顯示表數據” ![](https://box.kancloud.cn/2fbfad1222d9d137f879efe20f02fa65_482x244.png) 數據插入成功,你會發現sql語句中并沒有插入id,但是id自動插入了,而且如果有多個數據,id是自增的,這就是我剛剛說的要把id設為標識的好處,我們不必關心id的值是多少了。 附上源代碼 ~~~ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data; using System.Data.SqlClient; using System.Configuration; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string dataDir = AppDomain.CurrentDomain.BaseDirectory; if (dataDir.EndsWith(@"\bin\Debug\") || dataDir.EndsWith(@"\bin\Release")) { dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName; AppDomain.CurrentDomain.SetData("DataDirectory", dataDir); } string strConnection = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True"; SqlConnection objConnection = new SqlConnection(strConnection); objConnection.Open(); SqlCommand sqlc = objConnection.CreateCommand(); sqlc.CommandText = "Insert into text(name,age) values ('qinchuan',22)"; sqlc.ExecuteNonQuery(); Console.ReadKey(); } } } ~~~ 11、如果我的sql語句是例如select的查詢語句呢?也就是說我需要對返回的結果進行操作怎么辦?我們這時候就不能使用ExecuteNonQuery了,舉個例子: 先來接收用戶的輸入 ~~~ Console.WriteLine("請輸入用戶名"); string username = Console.ReadLine(); ~~~ 根據用戶輸入的用戶名來查詢數據庫,注意我sql語句的書寫方式 ~~~ sqlc.CommandText = "select * from M_User where username='" + username+"'"; ~~~ 使用SqlDataReader對象來接收返回的數據 ~~~ SqlDataReader sdr = sqlc.ExecuteReader(); ~~~ 我們假設現在表中有username字段和password字段,我想通過用戶輸入的用戶名找到該用戶名相應的密碼怎么辦?使用GetType(Type根據你數據庫字段類型而定,這里的password數據庫中存入的是字符創varchar,所以用string),GetType的參數是一個整數,代表返回結果集中第幾列的數據,SqlDataReader的GetOriginal的參數是一個字符串,代表結果集中該字符串的位置。比如查找qinchuan這個用戶,他的密碼在第三列,通過GetOriginal("password")可以拿到index為2,然后GetString(2)就可以拿到它的密碼了 ~~~ string rpassword = sdr.GetString(sdr.GetOrginal("password")); ~~~ ###優化 我們在鏈接數據庫的時候將App.config文件中的那一串字符串拷貝過來保存到一個字符串類型變量中,然后將該字符串作為參數傳入到SqlConnection中 ~~~ string strConnection = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True"; SqlConnection objConnection = new SqlConnection(strConnection); ~~~ 這種方法乍一看很簡單,但是當文件越來越多的時候,如果數據庫鏈接的字符串有變動,那么要改的地方會非常多,有一種十分漸簡便的方法,我們可以直接使用配置文件中的信息,不必非要把它復制過來,還記得我之前說要引入System.Configuration這個引用了嗎?我們可以使用ConfigurationManager來得到相應的配置文件的信息 ~~~ ConfigurationManager.ConnectionStrings["str"].ToString() ~~~ 上面的“str”就是我的配置文件的name ![](https://box.kancloud.cn/d64947ff339d95d51e08bbce5af0e16a_889x103.png) 對比一下這兩種方法,你會發現下面的方法很簡單,當有變動的時候只需要更改配置文件里面的信息就可以了 ~~~ SqlConnection objConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["str"].ToString()); ~~~ 還記得我之前說過的一個坑嗎? ![](https://box.kancloud.cn/dff7bcf2f8ad3b230b1fda960dc2dbc8_517x207.png) 你可以嘗試在建表的時候把表的名字設為user,你會發現當程序執行的時候會報錯:user附近有非法的標識符。這是因為user默認是sql的關鍵字,你是不能把一個關鍵字作為表名的,有兩種解決方法 1、使用“[表名]”來避免 ~~~ sqlc.CommandText = "select * from [user] where username='" + username+"'"; //注意user被[]包了起來 ~~~ 2、換個表名
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看