首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在我的代码中出现“找不到可安装的ISAM”错误的原因是什么?

在我的代码中出现“找不到可安装的ISAM”错误的原因是什么?
EN

Stack Overflow用户
提问于 2011-12-12 20:55:41
回答 4查看 5.7K关注 0票数 1

我不明白为什么我会在这里得到一个错误:Could not find installable ISAM。我正在尝试添加数据到Access文件,这似乎有一个问题。

我不确定为什么这不起作用,因为我在删除每个条目时都使用了almoust严格的代码。

这里有什么明显的错误吗?

代码语言:javascript
复制
        // Creating a query for each type of data.
        string sqlPC = @"INSERT INTO PersonalData([Type], [UserName], [Password]) 
                         VALUES(@Type, @UserName, @Password)";
        string sqlWS = @"INSERT INTO PersonalData([Type], [URL], [UserName], [Password]) 
                         VALUES(@Type, @URL, @UserName, @Password)";
        string sqlSC = @"INSERT INTO PersonalData([Type], [SoftwareName], [SerialCode]) 
                         VALUES(@Type, @SoftwareName, @SerialCode)";

    HashPhrase hashPhrase = new HashPhrase();
    Security security = new Security();

    private void InsertData(string sql)
    {
        string hashShortPass = hashPhrase.ShortHash(pass);

        string connectionString = 
            @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source={0};
              Persist Security Info=False; Jet OLEDB: Database Password={1};";

        using (OleDbConnection connection = new OleDbConnection())
        {
            connection.ConnectionString = 
                string.Format(connectionString, filePath, hashShortPass);

            using (OleDbCommand command = new OleDbCommand(sql, connection))
            {
                OleDbParameter prmType = new OleDbParameter
                    ("@Type", security.EncryptAES(cmbType.Text, pass, user));

                command.Parameters.Add(prmType);

                if (cmbType.SelectedIndex == 0)
                {
                    OleDbParameter prmUserName = new OleDbParameter
                        ("@UserName", security.EncryptAES
                            (txtUserName.Text.Trim(), pass, user));
                    OleDbParameter prmPassword = new OleDbParameter
                        ("@Password", security.EncryptAES
                            (txtPassword.Text, pass, user));

                    command.Parameters.Add(prmUserName);
                    command.Parameters.Add(prmPassword);
                }
                else if (cmbType.SelectedIndex == 1)
                {
                    OleDbParameter prmURL = new OleDbParameter
                        ("@URL", security.EncryptAES
                            (txtURL.Text.Trim(), pass, user));
                    OleDbParameter prmUserName = new OleDbParameter
                        ("@UserName", security.EncryptAES
                            (txtUserName.Text.Trim(), pass, user));
                    OleDbParameter prmPassword = new OleDbParameter
                        ("@Password", security.EncryptAES
                            (txtPassword.Text, pass, user));

                    command.Parameters.Add(prmURL);
                    command.Parameters.Add(prmUserName);
                    command.Parameters.Add(prmPassword);
                }
                else if (cmbType.SelectedIndex == 2)
                {
                    OleDbParameter prmSoftwareName = new OleDbParameter
                        ("@SoftwareName", security.EncryptAES
                            (txtSoftwareName.Text.Trim(), pass, user));
                    OleDbParameter prmSerialCode = new OleDbParameter
                        ("@SerialCode", security.EncryptAES
                            (txtSerialCode.Text.Trim(), pass, user));

                    command.Parameters.Add(prmSoftwareName);
                    command.Parameters.Add(prmSerialCode);
                }

                try
                {
                    connection.Open();
                    command.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error: " + ex.Message);
                }
            }
        }
    }
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-13 08:11:40

我改变了:

代码语言:javascript
复制
string connectionString = 
            @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source={0};
              Persist Security Info=False; Jet OLEDB: Database Password={1};";

至:

代码语言:javascript
复制
string connectionString = 
            @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source={0};
              Persist Security Info=False; Jet OLEDB:Database Password={1};";

它起作用了,我有一个不需要的空间...

票数 2
EN

Stack Overflow用户

发布于 2013-10-28 21:49:32

在我的例子中,我修复了:

我改变了:

代码语言:javascript
复制
string conexion = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\temp\Fa.mdb;Database Password=xxx;";

至:

代码语言:javascript
复制
string conexion = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\temp\Fa.mdb;Persist Security Info=False; Jet OLEDB:Database Password='xxx';";
票数 3
EN

Stack Overflow用户

发布于 2011-12-12 21:08:00

对于插入部分,您有一个名为Password的字段,这是MS Access中的一个关键字。insert语句应该包含密码,而不是密码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8474641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档