注册表值未存储在数据库中

时间:2013-08-30 05:00:22

标签: c# .net database

我正在读取Registry key值并将它们存储在string variables中,并将这些值作为参数传递给NewReg方法以将它们存储到数据库中,但是我收到此错误消息{{ 1}}因此此消息you must use an updateable query

我出错的地方?我怎么能做到这一点?

user not added in database

DBHandling类中的NewReg方法

public partial class LoginForm : Form
{
    DBHandling db = new DBHandling();

    public LoginForm()
    {
        try
        {
            RegistryKey key = Registry.ClassesRoot;
            RegistryKey registryKey = Registry.CurrentUser.OpenSubKey(@"Software\StudentExm");

            string usrname = registryKey.GetValue("UserName").ToString();
            string password = registryKey.GetValue("Password").ToString();
            string emailId = registryKey.GetValue("EmailID").ToString();
            string contctno = registryKey.GetValue("ContactNo").ToString();
            string regDate = registryKey.GetValue("RegDate").ToString();
            registryKey.Close();

            if (NewReg(usrname, password, emailId, contctno, regDate))
            {
                MessageBox.Show("User Name: " + usrname + "\n" +
                    "Password: " + password + "\n" +
                    "Email ID: " + emailId + "\n" +
                    "Contact No: " + contctno + "\n" +
                    "Reg Date: " + regDate);
            }
            else
            {
                MessageBox.Show("User not added in the database.");
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message.ToString());
        }
    }
}

提前感谢您提供任何帮助

3 个答案:

答案 0 :(得分:0)

正如我在评论中所说,这是一个文件权限问题。

当您尝试执行UPDATE或更新时,会发生此错误 其他一些改变数据库中信息的行动。

  

发生此错误是因为dataobjects ado或ADO.NET是什么   由于不足,无法写入Microsoft Access数据库   写入/修改权限,可以通过授予轻松修复   读/写IUSR_和IWAM _。

     当匿名Web用户需要修改Microsoft Access时,

IUSR_<machineName> IWAM_<machineName> 成为焦点   数据库&amp;这样做时,Jet会创建一个.ldb文件来处理数据库   锁定。如果上面提到的2个用户没有必要   权限,锁定文件未创建&amp;最终是微软   Access数据库无法修改..

<强> FIX:

  

要解决此问题,请右键单击包含该文件夹的文件夹   Microsoft Access数据库&amp;选择属性。使用“安全”选项卡   资源管理器调整此文件夹的属性以使Internet成为可能   来宾帐户具有正确的可写权限。

     

还要确保MDB文件本身未标记为只读,并且   您没有打开MDB文件;特别是在独家模式;   尝试从ASP

到达Microsoft Access数据库时

来源: http://forums.asp.net/t/154273.aspx/9/10

答案 1 :(得分:0)

我猜这个问题是因为这条线:

string usrname = registryKey.GetValue("UserName") + Environment.NewLine;

代码U可以像这样改变并尝试。

 string usrname = registryKey.GetValue("UserName").ToString();

当您使用+ Environment.NewLine;分配值时。它不应该是。,

这就是you must use an updateable query错误消息的原因。

这是您的自定义消息user not added in database。由于条件失败,它会显示出来。

希望它有所帮助。,:)

答案 2 :(得分:0)

试试这样 enter image description here

 string keyName = @"HKEY_CURRENT_USER\...\Node[Name]";
        string valueName = "Value"; // Value in registry Ex. RegDate
        object Obj = Registry.GetValue(keyName, valueName, "Exist");
        if (Obj == null)
        {

        }
        else
        {
            Do your Code .... 
        }
相关问题