亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

SQL Server中的查詢

系統 1798 0


? ? ? 本博文簡介一下SQL Server中經常使用的幾類查詢及相關使用的方法。

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

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

? ? ??

          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))//使用連接池,使用完后自己主動關閉連接
            {
                using (SqlCommand cmd = con.CreateCommand())
                {
                    string sql = "select count(*) from User_Info";//定義sql語句,查詢整個表的行數
                    cmd.CommandText = sql;
                    con.Open();
                    int count = Int32.Parse(cmd.ExecuteScalar().ToString());                                                                                                                //返回整個結果集的首行首列,是一個Object類型
                    Console.WriteLine(count);

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

? ? ?? SQL Server中的查詢

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

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

? ? ??

      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))//使用連接池,使用完后自己主動關閉連接
            {
                using (SqlCommand cmd = con.CreateCommand())
                {

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

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

? ? ?? SQL Server中的查詢

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

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

? ? ??

              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))//使用連接池,使用完后自己主動關閉連接
            {
                using (SqlCommand cmd = con.CreateCommand())
                {
                    
                    //異步查詢大結果集
                    cmd.CommandText = "waitfor delay '00:00:05' ;select * from User_Info";  //延遲5秒連接數據庫
                    con.Open();
                    IAsyncResult  iar=cmd.BeginExecuteReader();  
                    //BeignExecuteReader方法推斷異步查詢是否完畢

                    //此處能夠寫入其它數據庫操作

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

? ? ??

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

? ? ? 一般我們在用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))//使用連接池,使用完后自己主動關閉連接
            {
                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();//打開數據庫
                    cmd.CommandText = sql;
                    int res = cmd.ExecuteNonQuery(); //運行SQL語句返回受影響的行數
                    if (res > 0)
                    {
                        Console.WriteLine("成功插入" + res + "條記錄");
                    }
                    else
                    {
                        Console.WriteLine("插入失敗");
                    }
                    Console.ReadLine();
                }
            }
        }
    
? ? ? 運行結果例如以下:

? ? ?? SQL Server中的查詢

? ? ? 五、參數化查詢

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

? ? ??

      <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方法直接給參數賦值

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

</span>
    

? ? ? 六、MuHipleActiveResultSet方法運行多活動結果集

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



? ? ??

? ? ??

SQL Server中的查詢


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 热久久最新地址 | 久久福利在线 | 日本在线看片网站 | 天天鲁天天爱天天鲁天天 | 国内精品自在自线在免费 | 国产成人 免费观看 | 久久 精品 一区二区 | 男人的天堂在线免费视频 | 日韩欧美中文字幕一区 | 日本高清免费不卡在线播放 | 免费a级在线观看完整片 | 午夜a毛片 | 片在线观看 | 99在线精品日韩一区免费国产 | 人人干操| 中文字幕在线一区 | 青青青草视频在线 | 免费一级a毛片在线 | 亚洲欧美日本一区 | 一区二区三区日韩精品 | 五月天激情亚洲婷婷在线 | 日本护士a做爰免费观看 | 亚洲精品久久久久影院 | 精品在线99 | 亚洲精品大片 | 99热成人| 久久黄色一级视频 | 亚洲中午字幕 | 一区二区三区久久精品 | 美国黑人特大一级毛片 | 国产l精品国产亚洲区在线观看 | 久青草视频97国内免费影视 | 女人18毛片黄| 亚洲精品一区二区观看 | 国产精品视频免费一区二区三区 | 久久中文字幕2021精品 | 久久er国产精品免费观看1 | 青草精品视频 | 国产一级久久久久久毛片 | 国产亚洲人成a在线v网站 | 国产男女xoxo在线视频 |