黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

SQL Server中的查詢

系統(tǒng) 2291 0


? ? ? 本博文簡介一下SQL Server中經(jīng)常使用的幾類查詢及相關(guān)使用的方法。

? ? ? 一、ExecuteScalar方法獲取單一值

? ? ?? ExecuteScalar方法是SqlCommand類的方法之中的一個,運行查詢,并返回查詢所返回的結(jié)果集中的第一行第一列。

? ? ??

          class Program
    {
        static void Main(string[] args)
        {   

            string strCon = "Data Source=192.168.24.193;Initial Catalog=charge_sys;User ID=sa;Password=123456";
            using (SqlConnection con = new SqlConnection(strCon))//使用連接池,使用完后自己主動關(guān)閉連接
            {
                using (SqlCommand cmd = con.CreateCommand())
                {
                    string sql = "select count(*) from User_Info";//定義sql語句,查詢整個表的行數(shù)
                    cmd.CommandText = sql;
                    con.Open();
                    int count = Int32.Parse(cmd.ExecuteScalar().ToString());                                                                                                                //返回整個結(jié)果集的首行首列,是一個Object類型
                    Console.WriteLine(count);

                    cmd.CommandText = "select * from User_Info";//定義sql語句
                    string s = cmd.ExecuteScalar().ToString();                                                                                                                            //返回整個User_Info表的第一行并賦給字符串s
                    Console.WriteLine(s);//將結(jié)果打印輸出
                    Console.ReadLine();
                }
            }
        }
    
? ? ? 運行結(jié)果例如以下圖:

? ? ?? SQL Server中的查詢

? ? ? 二、ExecuteNonQuery方法運行增刪改操作

? ? ?? ExecuteNonQuery方法也是SqlCommand的方法之中的一個,對連接運行T-SQL語句并返回受影響的行數(shù)。舉例:

? ? ??

      static void Main(string[] args)
        {   

            string strCon = "Data Source=192.168.24.193;Initial Catalog=charge_sys;User ID=sa;Password=123456";
            using (SqlConnection con = new SqlConnection(strCon))//使用連接池,使用完后自己主動關(guān)閉連接
            {
                using (SqlCommand cmd = con.CreateCommand())
                {

                    ///數(shù)據(jù)操作語言,增刪改查
                    string ins = "insert into User_Info (userID) values ('123')";                 

                    con.Open();//連接數(shù)據(jù)庫
                    cmd.CommandText = ins;
                    int res = cmd.ExecuteNonQuery(); //運行SQL語句返回受影響的行數(shù)
                    if (res > 0)
                    {
                        Console.WriteLine("成功插入" + res + "條記錄");
                    }
                    else
                    {
                        Console.WriteLine("插入失敗");
                    }
                    Console.ReadLine();
                }
            }
        }
    
? ? ? 運行結(jié)果例如以下圖:

? ? ?? SQL Server中的查詢

? ? ? 三、BeginExecuteReader()和EndExecuteReader()異步查詢大結(jié)果集

? ? ? 所謂 異步查詢大結(jié)果集,就是假設(shè)數(shù)據(jù)量很大,那么在開始運行查詢和結(jié)束查詢這一過程中可能會須要耗費一段時間,在這段時間我們也能夠讓我們的程序去干一些別的事,就有了上述兩種方法。舉例:

? ? ??

              static void Main(string[] args)
        {   

            string strCon = "Data Source=192.168.24.193;Initial Catalog=charge_sys;User ID=sa;Password=123456";
            using (SqlConnection con = new SqlConnection(strCon))//使用連接池,使用完后自己主動關(guān)閉連接
            {
                using (SqlCommand cmd = con.CreateCommand())
                {
                    
                    //異步查詢大結(jié)果集
                    cmd.CommandText = "waitfor delay '00:00:05' ;select * from User_Info";  //延遲5秒連接數(shù)據(jù)庫
                    con.Open();
                    IAsyncResult  iar=cmd.BeginExecuteReader();  
                    //BeignExecuteReader方法推斷異步查詢是否完畢

                    //此處能夠?qū)懭肫渌鼣?shù)據(jù)庫操作

                    SqlDataReader  sdr=  cmd.EndExecuteReader(iar); 
                    //EndExecuteReader方法結(jié)束連接,并把數(shù)據(jù)存儲到數(shù)據(jù)集中
                    while (sdr.Read())
                    {
                        Console.WriteLine(sdr[0]+"    "+sdr[1]);
                    }               
                    Console.ReadLine();
                }
            }
        }
    
? ? ? 因為延遲了5秒中,所以輸出結(jié)果在5秒以后才出現(xiàn)例如以下:

? ? ??

? ? ? 四、運行批量查詢操作

? ? ? 一般我們在用SQL語句查詢時僅僅是查詢到一條記錄,那么怎樣在一個表中同一時候插入或者更新多條記錄呢,這就用到了多天T-SQL語句。舉例:

? ? ??

          class Program
    {
        static void Main(string[] args)
        {   

            string strCon = "Data Source=192.168.24.193;Initial Catalog=charge_sys;User ID=sa;Password=123456";
            using (SqlConnection con = new SqlConnection(strCon))//使用連接池,使用完后自己主動關(guān)閉連接
            {
                using (SqlCommand cmd = con.CreateCommand())
                {
                    
                    //運行批量操作查詢,同一時候運行多條SQL語句
                    
                    string sql = "update User_Info set UserName  ='888' where userID ='2'"
                        + "update User_Info set UserName  ='999' where userID ='3'";
                    //將兩條T-SQL語句連接

                    con.Open();//打開數(shù)據(jù)庫
                    cmd.CommandText = sql;
                    int res = cmd.ExecuteNonQuery(); //運行SQL語句返回受影響的行數(shù)
                    if (res > 0)
                    {
                        Console.WriteLine("成功插入" + res + "條記錄");
                    }
                    else
                    {
                        Console.WriteLine("插入失敗");
                    }
                    Console.ReadLine();
                }
            }
        }
    
? ? ? 運行結(jié)果例如以下:

? ? ?? SQL Server中的查詢

? ? ? 五、參數(shù)化查詢

? ? ? 我們在剛開始學習在應(yīng)用程序中編寫SQL語句時,一般使用拼接字符串,單引號、雙引號什么都有,編寫起來非常不方便,并且easy被SQL注入破壞敏感數(shù)據(jù),既不安全,由此我們引入了參數(shù)化查詢,顧名思義,就是將要查詢的內(nèi)容用參數(shù)取代。看以下的樣例:

? ? ??

      <span style="font-family:Times New Roman;">static void Main(string[] args)
        {
            string conStr = "Data Source=192.168.24.193;Initial Catalog=charge_sys;User ID=sa;Password=123456";
            using (SqlConnection con = new SqlConnection(conStr))
            {
               
                using (SqlCommand cmd = con.CreateCommand())
                {
                    cmd.CommandText  = "select * from User_Info where userID=@userid";
                    //第一種方法
                    //SqlParameter param = new SqlParameter();
                    //param.ParameterName = "username";
                    //param.SqlDbType = SqlDbType.Char;
                    //param.Size = 10;
                    //param.Value = "admin";
                    //con.Open();

                    //另外一種方法,直接使用AddWithValue方法直接給參數(shù)賦值

                    cmd.Parameters.AddWithValue("@userid", '1');
                    con.Open();
                    SqlDataReader sdr = cmd.ExecuteReader();
                    while(sdr.Read())
                    {
                        Console.WriteLine(sdr[0]+"   "+sdr[1]);
                    }
                    Console.ReadLine();
                }
            }
        }

</span>
    

? ? ? 六、MuHipleActiveResultSet方法運行多活動結(jié)果集

? ? ?一般一個Connection對象僅僅支持一個活動操作,假設(shè)我們須要加入另外一個或其它的或,在SQL連接語句后加上 MuHipleActiveResultSet=True就可以。這里就不在演示了,希望本博文能給您帶來一些幫助。



? ? ??

? ? ??

SQL Server中的查詢


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論