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

来源:互联网 发布:日本网络电视在线直播 编辑:程序博客网 时间:2024/04/28 19:58

 在操作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.

 

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

原创粉丝点击