ADO.NET入門

 

 

1、Ado.net是什麼?

通過ado.Net技術,在程序中執行sql數據庫的目的

把mdf文件附加到數據庫中

不用的時候可以分離

2、神奇代碼

加到main方法中

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);

            }

3、連接到SQLServer

連接字符串:程序通過連接字符串 指定要連哪臺服務器上的、哪個實例的哪個數據庫、用什麼用戶名密碼等。

        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);

            }

            //項目內嵌mdf文件形式的鏈接字符串

            using (SqlConnection conn = newSqlConnection(@"Datasource=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database1.mdf;

Integrated Security=True;Userinstance=True")) //連數據庫

 

“.\SQLEXPRESS”表示“本機上的SQLEXPRESS實例”,如果數據庫實例名不是SQLEXPRESS,則需要修改。“Database1.mdf”爲mdf的文件名。

 

AttachDBFilename=|DataDirectory|\Database1.mdf;

表示加入數據庫文件,爲當前目錄下的Database1.mdf文件

如果加入的是其他文件則把文件的目錄地址放到這裏

 

SqlConnection類不存在,必須using或者ctrl+.(右鍵)解析

 

//ado.net中通過SqlConnection 類創建到SQLServer的鏈接,SqlConnection代表一個數據庫鏈接,ado.net中的鏈接等資源都實現了IDisposable接口

//可以使用using進行資源管理,出了using的{}區域資源鏈接就釋放了,不用try-catch再close和dispose

//後面的command和reader都可以用using進行資源釋放

           

 

4、簡單的insert語句:

ExecuteNonQuery執行一個非查詢語句

{

                conn.Open();

              using (SqlCommand cmd = conn.CreateCommand())

//SqlCommand表示向服務器提交的一個命令(SQL語句等)

                {

           cmd.CommandText = "insert into MyTable1(Name)values('abc')";

         //創建commandText,CommandText屬性爲要執行的SQL語句

               cmd.ExecuteNonQuery();

// ExecuteNonQuery方法執行一個非查詢語句(Update、Insert、Delete等)

ExecuteNonQuery;返回值是執行的影響行數

                   Console.WriteLine("插入成功");

                   Console.WriteLine("打開數據庫鏈接成功");

 

5、  ExecuteScalar:

 

using(SqlCommand cmd = conn.CreateCommand())

                {

                  //cmd.CommandText = "select count(*)from mytable1";

                    cmd.CommandText ="select count(*) from T_users";

                   Console.WriteLine(cmd.ExecuteScalar());

//返回mytable1中第一行第一列的數據

                    //得到自增字段的值

                    cmd.CommandText ="insert into T_Users (UserName,password) output inserted.idvalues('jiangshan','147258')";

                    int id =Convert.ToInt32(cmd.ExecuteScalar());

                    Console.WriteLine("插入的主鍵的值:{0}", id);

                }

cmd.CommandText= "select count(*) from T_Users";

inti =Convert.ToInt32(cmd.ExecuteScalar());

ExecuteScalar方法用於執行查詢,並返回查詢所返回的結果集中第一行的第一列,返回值是object類型。

 

cmd.CommandText= "Insert into T_Users(UserName,Password)

outputinserted.Id values('admin','888888')";

inti = Convert.ToInt32(cmd.ExecuteScalar());

得到自動增長字段的主鍵值,

在values關鍵詞前加上output inserted.Id,其中Id爲主鍵字段名。

執行結果就是插入的主鍵值,用ExecuteScalar執行最方便。

向數據庫中插入數據時不用插入id是多少,id是自動增長的

 

cmd.CommandText= "select getdate()";

DateTimedt =Convert.ToDateTime(cmd.ExecuteScalar());

 

6、 ExecuteReader

執行查詢:返回有多行結果集的用ExecuteReader

SqlDataReaderreader = cmd.ExecuteReader();...

while(reader.Read())數據庫的遍歷,只能一行一行的讀,不能跳

{

Console.WriteLine(reader.GetString(1));

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章