C#操作Sql数据库进行插入和查询

一.C#循环插入数据
数据库连接语句中的security=True意思是连接本地的服务器,如果连接远程的服务器需改成false或者不写,默认也是false

1.封装数据类

  public class UserData
    {
        //打卡时间
        public string time { get; set; }

        //类型
        public string type { get; set; }

        //卡号
        public string cardNumber { get; set; }
    }

2.实例化封装的类添加数据

     List<UserData> modelList = new List<UserData>();
      UserData model = new UserData();
         model.cardNumber = "接收的数据";
          modelList.Add(model);//添加到集合中

3.代码需理解,内含无用的Linq筛选代码,记得使用时进行删减

      try
            {
                string conn = "data source=.;database=ClockinData;integrated security=True";
                SqlConnection mycon = new SqlConnection(conn);   //定义SqlConnection对象实例并连接数据库
                mycon.Open();
                string myinsert = string.Empty;

                modelList = modelList.Where(p => p.type == "FINGERPRINT_COMPARE_PASS" || p.type == "4b").ToList();
                foreach (var item in modelList)//变量集合循环导入至数据库
                {
                    /*因为item.cardNumber变量中包含字节流右斜线,
                     * 会影响数据库语句的拼接所以要分割
                     */
                    var Time = item.cardNumber.Split('\0');
                    item.cardNumber = Time[0];
                    if (!string.IsNullOrEmpty(item.cardNumber))//有卡号则导入
                    {
                        myinsert = "INSERT INTO UserData(time,type,Cardnumber) VALUES('" + item.time + "','" + item.type + "','" + item.cardNumber + "')";
                        SqlCommand mycom = new SqlCommand(myinsert, mycon);           //定义对象并连接数据库
                        mycom.ExecuteNonQuery();
                    }
                                     //执行插入语句
                  
                }
                ///若表名字固定,例如为table1,则上一条语句为:"insert into table1 values()";

                ///vulues 中为待插入的数据,需与表中列的顺序一一对应。
                //SqlCommand mycom = new SqlCommand(myinsert, mycon);           //定义对象并连接数据库
                //mycom.ExecuteNonQuery();                           //执行插入语句
                mycon.Close();                //关闭对象并释放所占内存空间    
                mycon.Dispose();
                MessageBox.Show("导入成功");
            }
            catch (Exception)
            {

                MessageBox.Show("导入失败");
                throw;
            }

二丶数据库表的查询
1.data source是数据库地址,点表示本地,database为数据库的名称

string str = "data source=.;database=MyTest; integrated security=True ";//定义数据库连接参数
            SqlConnection con = new SqlConnection(str);
            con.Open();
            SqlDataAdapter ad = new SqlDataAdapter("select * from [User] ", con);
            DataSet set = new DataSet();
            ad.Fill(set, "User");
            //int kucun = Convert.ToInt32(set.Tables["dbo.User"].Rows[0]["User"]);
            var user = set.Tables["User"].Rows[0]["User"];//查询User表中User字段的数据
            var pwd =set.Tables["User"].Rows[0]["Pwd"];//查询User表中Pwd字段的数

2.peo类

 public class Peo
    {
        public string name { get; set; }

        public string pwd { get; set; }
    }

3.将数据库DataSet中查询出的值进行集合化,集合化之后可根据一条数据中某列的值寻找对应的另一个值

 public void GetPeoName() {

            string str = "data source=.;database=MyTest; integrated security=True ";//定义数据库连接参数
            SqlConnection con = new SqlConnection(str);
            con.Open();
            SqlDataAdapter ad = new SqlDataAdapter("select * from [MyUser] ", con);
            DataSet set = new DataSet();
            ad.Fill(set, "MyUser");
            //int kucun = Convert.ToInt32(set.Tables["dbo.User"].Rows[0]["User"]);
            var ifdata = "身份证号";
            List<Peo> pelist = new List<Peo>();
            foreach (DataRow dt in set.Tables["MyUser"].Rows)
            {
                var i=0;
                var pe = new Peo();
                foreach (DataColumn dc in set.Tables["MyUser"].Columns)// 遍历所有列
                {
                   
                    var TableName = set.Tables["MyUser"].Columns[i++];//遍历所有列名
                    string dataname = TableName.ToString();
                    if (dataname == "Name"|| dataname == "Pwd")//只读取指定的列
                    {
                        var data = dt[dc.ColumnName];
                        //此方法只支持保存两个列值,暂定思路在第二次循环外定义i循环内定义i++,判断i的值进入指定的switch选择里面,跳出之后清空i的值
                        if (string.IsNullOrEmpty(pe.name))
                        {
                            pe.name = data.ToString();
                        }
                        else
                        {
                            pe.pwd = data.ToString();
                        }
                    }
                 
                }
                pelist.Add(pe);
            }
            pelist = pelist.Where(p => p.pwd.Trim() == ifdata).ToList();
            if (pelist.Any())
            {
                var name = pelist[0].name.Trim();//获取身份证号对应的人员名称

            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值