首页
\
问答
\
在我的代码中,“无法找到可安装的ISAM”错误的原因是什么?(What could be the cause of 'Could not find installable ISAM' error in my code?)
在我的代码中,“无法找到可安装的ISAM”错误的原因是什么?(What could be the cause of 'Could not find installable ISAM' error in my code?)
我无法弄清楚为什么我在这里收到错误说:
Could not find installable ISAM
。 我试图将数据添加到Access文件,这似乎有问题。我不确定为什么这不起作用,因为我在删除每个条目时使用almoust严格的代码。
这里有任何明显的错误吗?
// 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); } } } }
I can't figure out why I am getting an error here saying:
Could not find installable ISAM
. I am trying to add data to Access file which seems to have a problem.I'm not sure why this wouldn't work since I am using almoust exacting code when deleting each entry.
Is there any obvious errors here?
// 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); } } } }
更新时间:2023-02-03 19:02
最满意答案
在我的情况下,我修正了这样:
我改变:
string conexion = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\temp\Fa.mdb;Database Password=xxx;";
至:
string conexion = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\temp\Fa.mdb;Persist Security Info=False; Jet OLEDB:Database Password='xxx';";
I have changed:
string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source={0}; Persist Security Info=False; Jet OLEDB: Database Password={1};";
To:
string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source={0}; Persist Security Info=False; Jet OLEDB:Database Password={1};";
And it works, I have had 1 unneeded space...
相关问答
更多-
这两个连接字符串都是错误的。 对于.xlsx,它应该是: StrConn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + srcFile + ";Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";"; (请注意额外的Xml部分,HDR = YES表示您的文件具有标题,IMEX = 1表示将所有数据视为文本以及重新定位的分号。您需要不同的连接字符串以用于.xlsm和.xlsb文件 - 请参阅 ...
-
你有没有试过这个连接 "Provider=Microsoft.Jet.OLEDB.4.0;Data source=D:\Users\rjimenez\Documents\QAdatabase.mdb;user id=admin;password=;" Have you tried this connection "Provider=Microsoft.Jet.OLEDB.4.0;Data source=D:\Users\rjimenez\Documents\QAdatabase.mdb;user id=a ...
-
感谢大家。 我发现它是什么:领先的等号登录密码(对于受保护的Access数据库)。 ►问题:如果数据库密码以等号(“=”)开头,则连接字符串会抛出“Installable ISAM”错误。 ►解决方案:删除密码中的前导等号。 错误消息确实没有详细说明,或暗示密码是问题。 我相信希望将来可以帮助别人。 Thanks Everyone. I found out what it was: Leading Equals Sign in the Password (For a protected Access Dat ...
-
尝试将数据导入C#时“无法找到可安装的ISAM”错误(“Cannot find installable ISAM” error when trying to pull data into C#)[2022-06-11]
通过将连接字符串修改为:我能够使其工作: string con = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Joshua.cameron\Documents\BullenGrosvenorTest\EstatesITExportSpec.xlsx;Extended Properties='Excel 12.0 Xml;HDR=YES' "; I was able to get this to work by modifying th ... -
您的连接字符串格式不正确。 Extended Properties值应括在引号="Excel 12.0 Macro; HDR=YES" ,因为这两个设置都是扩展属性的一部分。 完整连接字符串应格式化: "Data Source=
; Extended Properties=""Excel 12.0 Macro; HDR= """ 你的代码应该是: "Data Source=" & strWorkbook & "; Extended Properties=""Excel 1 ... -
在我的情况下,我修正了这样: 我改变: string conexion = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\temp\Fa.mdb;Database Password=xxx;"; 至: string conexion = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\temp\Fa.mdb;Persist Security Info=False; Jet OLEDB:Databa ...
-
为什么这个SQL查询会出现“无法找到可安装的ISAM”?(Why is this SQL query coming up with “Could not find installable ISAM”?)[2021-09-08]
根据connectionstrings.com ,您需要在使用IP时指定协议。 Provider=sqloledb;Data Source=190.190.200.100,1433;Network Library=DBMSSOCN; Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword; DBMSSOCN = TCP / IP。 这是如何使用TCP / IP而不是命名管道。 数据源的末尾是要使用的端口。 1433是SQL Ser ... -
使用Microsoft.ACE.OLEDB.12.0作为提供程序可以解决问题。 Using Microsoft.ACE.OLEDB.12.0 as the provider solves the problem.
-
找不到可安装的ISAM sql server OPENDATASOURCE函数(Could not Find Installable ISAM sql server OPENDATASOURCE function)[2022-04-15]
连接字符串看起来不太好。 也许类似于SELECT * FROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0','Data Source=D:\Kargozini\arazz\Arazdb.Mdb; Jet OLEDB:Database Password=MYPASSWORD;')会起作用(你的错过了冒号和'D'。 有关正确的Access连接字符串的更多示例,请查看此处 。 此外,该页面提到 一些密码长度超过14个字符的报告。 还有一些角色可能会造成麻烦。 如果遇到问题, ... -
您的连接字符串不正确。 这是错误的主要原因。 尝试按照http://www.connectionstrings.com/access/更正连接字符串语法 尝试使用物理路径,如“C:\ studentu-db.accdb”,如果您尝试从本地文件夹中找到访问数据库,则写入“| DataDirectory | \ studentu-db.accdb” your connection string is not proper. that is main reason this error comes. Try to ...