分享

51自学网C#学习笔记--Command操作数据

 工厂应用 2018-08-04
14.10    Command的三种方法  操作数据
//ExecuteNonQuery 不返回任何值,应用于Insert Update Delete 语句
mysqlCon.Open();
MessageBox.Show("数据库打开成功");
string sql = "insert into [tablename] (EMname,age,Sex,Deptment) Values ('老神在在',25,'男','战斗部')";
SqlCommand mycom = new SqlCommand(sql,mysqlCon);
MessageBox.Show("创建对象成功");
//不返回任何值,用于Insert ,Update,Delete
mycom.ExecuteNonQuery();
MessageBox.Show("数据插入成功");

//ExecuteScalar返回一个值,一般用于只返回一个值的语句,如数据统计Count,最大数Max,最小数Min

//ExecuteReader返回一个IDataReader,可用于迭代返回记录

DataReader对象提供了用顺序的,只读的方式读取Command对象获得的数据结果集。正是因为DataReader是以顺序的方式连续的读取数据,所以DataReader会以独占的方式打开数据库连接。

由于DataReader只执行读操作,并且每次旨在内存缓存区里存储结果集中的一条数据,所以使用DataReader对象的效率比较高,如果要查询大量数据,同时不需要随机访问和修改数据,DataReader是优先的选择。

DataReader对象常用的三个属性
FiledCount 表示记录中有多少字段
HasRows  表示DataReader是否包含数据
IsClosed 表示DataReader是否关闭


            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("存在数据");
                }
                else
                {
                    Console.Write("不存在数据");
                }
//表的字段数
                Console.WriteLine(mydr.FieldCount.ToString());
                mydr.Close();

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

          }

DataReader对象常用的方法
Close方法 将DataReader对象关闭
GetDataTypeName方法 取得指定字段的数据形态
GetName方法                取得指定字段的字段名称
GetOrdinal方法              取得指定字段名称在记录中的顺序
GetValue方法                取得指定字段的数据
GetValues方法              取得全部字段的数据
Read方法                      读取下一条记录
//0为第一个字段的数据类型,比如Int型
Console.WriteLine(mydr.GetDataTypeName(0));
//0为第一个字段的数据名称,比如ID
Console.WriteLine(mydr.GetName(0));
//ProgramID字段在表中的顺序号,比如2
Console.WriteLine(mydr.GetOrdinal("ProgramID"));
//mydr.GetValue默认指向当前数据之前的位置,因此必须先read
mydr.Read();
Console.WriteLine(mydr.GetValue(1));
//获取所有数据,一行一行的读取,这里定义变量Object数组承载所有类型的数据
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()是获取第一个字段的值,
//mydr["ProgramID"].ToString()是根据字段名称获取值
                while (mydr.Read())
                {
                    Console.Write(mydr[0].ToString() + ",");
                    Console.Write(mydr[1].ToString() + ",");
                    Console.Write(mydr["ProgramID"].ToString());
                    Console.WriteLine();
                }
1,基础数据配置程序,1001
2,客户端程序,1002
3,基础参数管理程序,1003


访问DataReader对象时,使用索引要比使用字段名称访问速度要快很多

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多