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对象时,使用索引要比使用字段名称访问速度要快很多
|
|
来自: 工厂应用 > 《51自学网C#学习笔记》