C#中的Datatable(初步)

做为刚刚实习的dotnet实习生,初步接触了Datatable想做一个简单的总结。

首先什么是Datatable,

DataTable是一个临时保存数据的网格虚拟表(表示内存中数据的一个表。)。DataTable是ADO dot net 库中的核心对象。

  1. 创建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);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值