做为刚刚实习的dotnet实习生,初步接触了Datatable想做一个简单的总结。
首先什么是Datatable,
DataTable是一个临时保存数据的网格虚拟表(表示内存中数据的一个表。)。DataTable是ADO dot net 库中的核心对象。
- 创建datatable以及实例及增加一条数据
DataTable usertable = new DataTable();//创建用户表,存放用户密码和余额
usertable.Columns.Add("用户名", typeof(string));//为表添加列,字段名为用户名,并设置字段类型为string
usertable.Columns.Add("密码", typeof(string));
usertable.Columns.Add("余额", typeof(int));
DataRow dr ;//创建行
dr= usertable.NewRow();//实例化行,并创建一条数据
dr["用户名"] = "张三"; //也可以写dr[0] = "张三";
dr["密码"] = "1234"; //dr[1] = "1234";
dr["余额"] = "100"; //dr[2] = "100";
usertable.Rows.Add(dr);//将这一条数据添加到行中
dr = usertable.NewRow();//每创建一行都要实例化一下,并Add到dr中
dr["用户名"] = "李四";
dr["密码"] = "2345";
dr["余额"] = "0";
usertable.Rows.Add(dr);
2.删除Datable中的某一条数据
首先根据输入的用户名找到那一行数据,然后
DataRow[] rows = goodstable.Select("商品名='" + goodsName.ToString().Trim() + "'");//goodsName是手动输入的需要删除的商品名,找到商品名为goodsName的那一行数据,赋给rows
foreach (DataRow row in rows)//循环遍历rows,删除数据
{
goodstable.Rows.Remove(row);
}
问题1???
为什么不能直接 goodstable.Rows.Remove(rows);直接删除,还要遍历一下??这么写会报错,, 无法从“System.Data.DataRow[]”转换为“System.Data.DataRow”。。。。
3.单个查询并输出
DataRow[] dataRows = PersonCard.Select("姓名='" + NameFind + "'"); //根据从NameFind中获取的值在DataTable中查询行数据
Console.WriteLine(@"姓名:{0} 年龄:{1} 性别:{2} 爱好:{3} 电话:{4}",
dataRows[0]["姓名"], dataRows[0]["年龄"], dataRows[0]["性别"], dataRows[0]["爱好"], dataRows[0]["电话"]);//显示获取的第0行“Name”列的值
4.查询全部
foreach (DataRow dataRows in PersonCard.Rows) //查询全部,PersonCard是一个datatable
{
Console.WriteLine(@"姓名:{0} 年龄:{1} 性别:{2} 爱好:{3} 电话:{4} 状态:{5}", dataRows["姓名"].ToString(),
dataRows["年龄"].ToString(), dataRows["性别"].ToString(), dataRows["爱好"].ToString(), dataRows["电话"].ToString(), dataRows["状态"].ToString());
}
5修改数据
Console.WriteLine("请输入您要修改的商品");//判断是否存在此商品
goodsName = Console.ReadLine();
DataRow[] dataRow = goodstable.Select("商品名='" + goodsName + "'");
Console.WriteLine("您要修改{0}的原来单价为{1}", dataRow[0]["商品名"], dataRow[0]["单价"]);
Console.WriteLine("请输入您修改后的单价");
string message = Console.ReadLine(); //修改内容
DataRow[] rows = goodstable.Select("商品名='" + goodsName.ToString().Trim() + "'");
foreach (DataRow row in rows)
{
row["单价"] = message;
}
6.充值,取一个数据加上输入的数,在放回去
Console.WriteLine("请输入需要充值的用户名");
string chongName = Console.ReadLine();
if (usertable.Select("用户名='" + chongName + "'").Length == 0)
{
Console.WriteLine("查询不到您要充值的用户");
continue;
}
Console.WriteLine("请输入需要充值的金额");
int money = int.Parse(Console.ReadLine());
DataRow[] rows = usertable.Select("用户名='" + chongName.ToString().Trim() + "'");
**int e = (int)rows[0]["余额"] + money;//划重点**
rows[0]["余额"] = e;
Console.Write("充值成功,充值后余额为");
Console.WriteLine(e);
7.结账,单价累加
for (int i = 0; i < 2; i++)
{
Console.WriteLine("请输入您想要购买的商品:");
string userGoods = Console.ReadLine();
DataRow[] rowsGoods = goodstable.Select("商品名='" + userGoods.ToString().Trim() + "'");
sumMoney += (int)rowsGoods[0]["单价"];
int chu = (int)rowsGoods[0]["出售数量"];
chu--;
int sheng = (int)rowsGoods[0]["剩余数量"];
sheng--;
}
DataRow[] rowsUser = usertable.Select("用户名='" + name.ToString().Trim() + "'");
int yue = (int)rowsUser[0]["余额"];
yue = yue - sumMoney;
rowsUser[0]["余额"] = yue;
Console.Write("您需要付款(元):");
Console.WriteLine(sumMoney);