Reputation: 693
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);
}
}
}
}
Upvotes: 1
Views: 6192
Reputation: 195
in my case i changed
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\\Export.accdb;Database Password=123"
as
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\\Export.accdb;Jet OLEDB:Database Password=123"
and it works...
Upvotes: 0
Reputation: 2046
In my case, i Fixed so:
I change:
string conexion = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\temp\Fa.mdb;Database Password=xxx;";
to:
string conexion = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\temp\Fa.mdb;Persist Security Info=False; Jet OLEDB:Database Password='xxx';";
Upvotes: 3
Reputation: 693
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...
Upvotes: 2
Reputation:
For the insert part you have a field named Password which is a keyword in MS Access. Your insert statement should include [Password] instead of Password.
Upvotes: 0