异常详细信息:System.Data.MissingPrimaryKeyException:表没有主键

 在操作DataTable时,调用一个find()时提示如下错误:

 异常详细信息:System.Data.MissingPrimaryKeyException:表没有主键

 

 最后在MSDN上找到了解决办法.具体是因为调用这个方法前提是其主体DataTable必须手动设置主键.过程如下:

    private void button1_Click(object sender, EventArgs e)
        {
            string UserName = this.txt_UserName.Text;
            string UserPwd = this.txt_UserPwd.Text;
            string strsql = "select * from tb_User where UserName='"+UserName+"'";
            DBCon dbcULogin = new DBCon();
            DataTable dt=  dbcULogin.GetDataTable(strsql);
            if (dt.Rows.Count > 0)
            {
                //DataColumn[] keys = new DataColumn[1];
                //keys[0] = dt.Columns[1];//这里表的第一列为UserName
               // dt.PrimaryKey = keys;

                DataRow dr = dt.Rows.Find(UserName);
                if (dr[2].Equals(UserPwd))
                {
                    //MessageBox.Show(dr[1].ToString(), "提示");
                    this.Close();
                    UserManage UserM = new UserManage();
                    UserM.ShowDialog();
                }
                else
                {
                    string ShowStr = "请输入正确的密码!";
                    CommonClass.MessageShow(ShowStr);
                }
            }
            else
            {
                string ShowStr = "你输入的用户名不存在!";
                CommonClass.MessageShow(ShowStr);
            }
        }

直接运行这段代码会出现如上所提示的错误,原因在上面已经说了.因此只需将上面注释去掉就可以了.这里只设置了一个主键,因为在使用时只需要一个主键,这个主键是查询表的主键,与DataBase中的表tb_User的主键是没有直接关系的,也就是你所设置的主键可以与表tb_user的不同,但上面红色注明的两个地方必须保持一致才行.有关表的主键设置的详细资料参加MSDN.

 

以上是我对这个问题的看法,各位同仁,多多指教.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值