小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

51自學(xué)網(wǎng)C#學(xué)習(xí)筆記--Command操作數(shù)據(jù)

 工廠應(yīng)用 2018-08-04
14.10    Command的三種方法  操作數(shù)據(jù)
//ExecuteNonQuery 不返回任何值,應(yīng)用于Insert Update Delete 語(yǔ)句
mysqlCon.Open();
MessageBox.Show("數(shù)據(jù)庫(kù)打開成功");
string sql = "insert into [tablename] (EMname,age,Sex,Deptment) Values ('老神在在',25,'男','戰(zhàn)斗部')";
SqlCommand mycom = new SqlCommand(sql,mysqlCon);
MessageBox.Show("創(chuàng)建對(duì)象成功");
//不返回任何值,用于Insert ,Update,Delete
mycom.ExecuteNonQuery();
MessageBox.Show("數(shù)據(jù)插入成功");

//ExecuteScalar返回一個(gè)值,一般用于只返回一個(gè)值的語(yǔ)句,如數(shù)據(jù)統(tǒng)計(jì)Count,最大數(shù)Max,最小數(shù)Min

//ExecuteReader返回一個(gè)IDataReader,可用于迭代返回記錄

DataReader對(duì)象提供了用順序的,只讀的方式讀取Command對(duì)象獲得的數(shù)據(jù)結(jié)果集。正是因?yàn)镈ataReader是以順序的方式連續(xù)的讀取數(shù)據(jù),所以DataReader會(huì)以獨(dú)占的方式打開數(shù)據(jù)庫(kù)連接。

由于DataReader只執(zhí)行讀操作,并且每次旨在內(nèi)存緩存區(qū)里存儲(chǔ)結(jié)果集中的一條數(shù)據(jù),所以使用DataReader對(duì)象的效率比較高,如果要查詢大量數(shù)據(jù),同時(shí)不需要隨機(jī)訪問(wèn)和修改數(shù)據(jù),DataReader是優(yōu)先的選擇。

DataReader對(duì)象常用的三個(gè)屬性
FiledCount 表示記錄中有多少字段
HasRows  表示DataReader是否包含數(shù)據(jù)
IsClosed 表示DataReader是否關(guān)閉


            string constr = "Server=10.8.12.12;user=XXX;pwd=XXXX;database=FFFFF";
            SqlConnection mycon = new SqlConnection(constr);
            try
            {
                mycon.Open();
                string sql = "select * from [Filetest]";
                SqlCommand mycom = new SqlCommand(sql, mycon);
                //聲明datareader
                SqlDataReader mydr = mycom.ExecuteReader();
                if (mydr.HasRows)
                {
                    Console.Write("存在數(shù)據(jù)");
                }
                else
                {
                    Console.Write("不存在數(shù)據(jù)");
                }
//表的字段數(shù)
                Console.WriteLine(mydr.FieldCount.ToString());
                mydr.Close();

            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message.ToString());
            }
            finally
            {
                mycon.Close();
            }
            Console.ReadKey();

          }

DataReader對(duì)象常用的方法
Close方法 將DataReader對(duì)象關(guān)閉
GetDataTypeName方法 取得指定字段的數(shù)據(jù)形態(tài)
GetName方法                取得指定字段的字段名稱
GetOrdinal方法              取得指定字段名稱在記錄中的順序
GetValue方法                取得指定字段的數(shù)據(jù)
GetValues方法              取得全部字段的數(shù)據(jù)
Read方法                      讀取下一條記錄
//0為第一個(gè)字段的數(shù)據(jù)類型,比如Int型
Console.WriteLine(mydr.GetDataTypeName(0));
//0為第一個(gè)字段的數(shù)據(jù)名稱,比如ID
Console.WriteLine(mydr.GetName(0));
//ProgramID字段在表中的順序號(hào),比如2
Console.WriteLine(mydr.GetOrdinal("ProgramID"));
//mydr.GetValue默認(rèn)指向當(dāng)前數(shù)據(jù)之前的位置,因此必須先read
mydr.Read();
Console.WriteLine(mydr.GetValue(1));
//獲取所有數(shù)據(jù),一行一行的讀取,這里定義變量Object數(shù)組承載所有類型的數(shù)據(jù)
object[] myobj = new object[mydr.FieldCount];
while (mydr.Read())
 {
        mydr.GetValues(myobj);
       foreach (object outobj in myobj)
             Console.Write(outobj + "\t");
     Console.WriteLine();
}

//Read方法,
//mydr[0].ToString()是獲取第一個(gè)字段的值,
//mydr["ProgramID"].ToString()是根據(jù)字段名稱獲取值
                while (mydr.Read())
                {
                    Console.Write(mydr[0].ToString() + ",");
                    Console.Write(mydr[1].ToString() + ",");
                    Console.Write(mydr["ProgramID"].ToString());
                    Console.WriteLine();
                }
1,基礎(chǔ)數(shù)據(jù)配置程序,1001
2,客戶端程序,1002
3,基礎(chǔ)參數(shù)管理程序,1003


訪問(wèn)DataReader對(duì)象時(shí),使用索引要比使用字段名稱訪問(wèn)速度要快很多

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多