C#數據庫——數據庫基本操作


ExecuteNonQuery方法、ExecuteScalar方法、ExecuteReader方法的區別

----ExecuteNonQuery():執行命令對象的SQL語句,返回一個int類型變量,如果SQL語句是對數據庫的記錄進行操作(如記錄的增加、刪除和更新),那么方法將返回操作所影響的記錄條數。

----ExecuteScalar():執行命令對象的SQL語句,如果SQL語句是SELECT查詢,則僅僅返回查詢結果集中的第1行第1列,而忽略其他的行 和列。該方法所返回的結果為object類型,在使用之前必須強制轉換為所需的類型。如果SQL語句不是SELECT查詢,則返回結果沒有任何作用。

----ExecuteReader():執行命令對象的SQL語句,在ADO.NET中,就是DataReader對象的ExecuteReader()方法來進行數據的列出,並且我們用這個ExecuteReader()方法來顯示數據是最快的一種方法,因為當我們在用ExecuteReader()方法中的DataReader 對象來進行數據的在網站建設中顯示時,他只可以一條一條向前讀,不能返回,也就是像ASP中的ADO方法中的Recordset 對象的Movenext一樣,它沒有move -1這樣的返回方法。

讀取方式一:executereader方式讀取數據,具有時效性,只讀,具有較高的讀取效率

//說明:程序代碼中data source 表示運行數據庫對應的計算機名,initial catalog表示所使用的數據庫名。uid為指定的數據庫用戶名,pwd為指定的用戶口令。
            //sa登錄方式,data source表示服務器地址,initial catalog表示數據庫名字,user id表示賬號名,pwd表示賬號密碼。
            string constr = "data source=.;initial catalog=QPMES_DEV;user id=sa;pwd=sa";
            //創建新的SQL鏈接
            SqlConnection con = new SqlConnection(constr);
            //創建SQL語句
            string sql = "select * from Test_LEO_PC";
            //創建數據庫命令
            SqlCommand com = new SqlCommand(sql, con);
            try
            {
                //打開數據庫
                con.Open();

                //executereader的方式讀取數據庫數據,這種方式讀取數據快
                SqlDataReader myReader;

                //執行數據庫數據
                myReader = com.ExecuteReader();
                
                //逐行讀取數據        
                while (myReader.Read())
                    {
                        Console.WriteLine("名字是{0},年齡是{1},地址是{2}", myReader.GetString(0), myReader.GetInt32(1), myReader.GetString(2));
                        //resultData.Add(new DataLink() { Name = myReader.GetString(0), Age = myReader.GetInt32(1), Address = myReader.GetString(2) });
                    }
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                con.Close();
            }

讀取方式二:通過dataset設置數據庫,其中DataSet會創建一個本地數據表,SqlDataAdapter用來操作本地數據庫,並與服務器數據庫進行交互,當建立本地數據表並調用Fill()函數填充數據表后,可以關閉與數據庫服務器的連接,當操作完成后,再建立連接把本地數據庫更新到服務器中。

SqlDataAdapter有兩個有用的方法,分別為 fill 和 update。下面分別來介紹這兩方法。

  1. fill 方法
      fill 方法是用來填充 DataSet 的。也就是,把數據庫中的運送到C#空間。fill 有13個重載的方法,在使用時可以根據情況選擇使用。使用 FillSchema,讓 SqlDataAdapter 創建DataSet 的架構,並在用數據填充它之前就將主鍵信息包括進去。

  2. update 方法
      update 方法是用來更改數據庫的。也就是,把C#內存中修改的內容同步到數據庫中。更新是逐行進行的。對於插入、修改和刪除,Update 方法會自動確定類型(Insert、Update 或 Delete)。

        static void Main(string[] args)
        {
            //說明:程序代碼中data source 表示運行數據庫對應的計算機名,initial catalog表示所使用的數據庫名。uid為指定的數據庫用戶名,pwd為指定的用戶口令。
            string constr = "data source=.;initial catalog=QPMES_DEV;user id=sa;pwd=sa";

            SqlConnection con = new SqlConnection(constr);

            string sql = "select * from Test_LEO_PC";

            SqlCommand com = new SqlCommand(sql, con);

            try
            {
                con.Open();

                //創建SqlDataAdapter對象
                SqlDataAdapter da = new SqlDataAdapter();

                //設置命令語句
                da.SelectCommand = com;

                //設置數據庫
                DataSet ds = new DataSet();

                //創建一張名稱為“try”的表,並通過fill方法把所有數據導入表中。
                da.Fill(ds, "try");

                //讀取數據的方式,通過遍歷的方式,遍歷行DataRow和列DataColumn。
                foreach(DataRow mDr in ds.Tables[0].Rows)
                {
                    Console.WriteLine("{0},{1},{2}", mDr[0], mDr[1], mDr[2]);
                }
                
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                con.Close();
            }
        }

dataset的update功能demo

        conn = new SqlConnection(connStr);
        //打開數據庫連接
        conn.Open();
        string sql = "select * from userinfo";
        //創建SqlDataAdapter類的對象
        SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
        //創建DataSet類的對象
        DataSet ds = new DataSet();
        //使用SQLDataAdapter對象sda將查詢結果填充到DataTable對象ds中
        sda.Fill(ds);
        //創建SqlCommandBuilder類的對象
        SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(sda);
        //創建DataRow類的對象
        DataRow dr = ds.Tables[0].NewRow();
        //設置name列的值
        dr["name"] = textBox1.Text;
        //設置password列的值
        dr["password"] = textBox2.Text;
        //向DataTable對象中添加一行
        ds.Tables[0].Rows.Add(dr);
        //更新數據庫
        sda.Update(ds);

補充關鍵點:
1、聲明sqldataadapter的幾種方法
https://blog.csdn.net/gatieme/article/details/20695853
2、遍歷dataset表的幾種方法
https://www.cnblogs.com/hailexuexi/p/5323967.html
3、數據庫的基本概念和面試題
https://www.cnblogs.com/wenxiaofei/p/9853682.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM