OleDb 连接到 Access 数据库
OleDb connection to an Access database
我一直在尝试写入数据库并保存到文件,但我无法让它工作,也不知道为什么。
我得到的错误是:
Exception thrown: 'System.Data.OleDb.OleDbException' in System.Data.dll
附加信息:
Could not find installable ISAM.
这是我的代码 运行,任何 help/advice 将不胜感激
private void BtnSubmit_Click(object sender, EventArgs e)
{
OleDbConnection Conn = new OleDbConnection();
Conn.ConnectionString = @"Provider = Microsoft.ACE.OLEDB.12.0; Data Source =| DataDirectory |\HoliPlanData.accdb; Trusted_Connection = True;";
String PayrollNo = TxtPayroll.Text;
String FirstName = TxtFirstName.Text;
String LastName = TxtLastName.Text;
String AnnualHolidayEntitlemet = TxtAHE.Text;
String DaysTakenToDate = TxtDTTD.Text;
OleDbCommand Query = new OleDbCommand("INSERT INTO Employee (PayrollNo, FirstName, LastName, AnnualHolidayEntitlement, DaysTakenToDate) Values(@PayrollNo, @FirstName, @LastName, @AnnualHolidayEntitlement, @DaysTakenToDate");
Query.Connection = Conn;
Conn.Open(); //THIS IS WHERE THE ERROR OCCURS IN CODEPROSSESS
if (Conn.State == ConnectionState.Open)
{
Query.Parameters.Add("@PayrollNo", OleDbType.VarChar).Value = PayrollNo;
Query.Parameters.Add("@FirstName", OleDbType.VarChar).Value = FirstName;
Query.Parameters.Add("@LastName", OleDbType.VarChar).Value = LastName;
Query.Parameters.Add("@AnnualHolidayEntitlement", OleDbType.VarChar).Value = AnnualHolidayEntitlemet;
Query.Parameters.Add("@DaysTakenToDate", OleDbType.VarChar).Value = DaysTakenToDate;
try
{
Query.ExecuteNonQuery();
MessageBox.Show("Data Added Successfully");
Conn.Close();
}
catch (OleDbException ex)
{
MessageBox.Show(ex.Message);
Conn.Close();
}
}
else
{
MessageBox.Show("Connection Failed");
}
}
安装 AccessDatabaseEngine 并重试。
如下更改连接字符串。
Conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;DataSource=|DataDirectory|\HoliPlanData.accdb;Trusted_Connection = True;";
两个问题:
- 正如您在上面的评论中指出的那样,您的连接字符串多了一个分号
- 您的 INSERT 查询缺少最后一个括号 )
比较这些行:
OleDbCommand Query = new OleDbCommand("INSERT INTO Employee (PayrollNo, FirstName, LastName, AnnualHolidayEntitlement, DaysTakenToDate) Values(@PayrollNo, @FirstName, @LastName, @AnnualHolidayEntitlement, @DaysTakenToDate");
OleDbCommand Query = new OleDbCommand("INSERT INTO Employee (PayrollNo, FirstName, LastName, AnnualHolidayEntitlement, DaysTakenToDate) Values(@PayrollNo, @FirstName, @LastName, @AnnualHolidayEntitlement, @DaysTakenToDate)");
我一直在尝试写入数据库并保存到文件,但我无法让它工作,也不知道为什么。
我得到的错误是:
Exception thrown: 'System.Data.OleDb.OleDbException' in System.Data.dll
附加信息:
Could not find installable ISAM.
这是我的代码 运行,任何 help/advice 将不胜感激
private void BtnSubmit_Click(object sender, EventArgs e)
{
OleDbConnection Conn = new OleDbConnection();
Conn.ConnectionString = @"Provider = Microsoft.ACE.OLEDB.12.0; Data Source =| DataDirectory |\HoliPlanData.accdb; Trusted_Connection = True;";
String PayrollNo = TxtPayroll.Text;
String FirstName = TxtFirstName.Text;
String LastName = TxtLastName.Text;
String AnnualHolidayEntitlemet = TxtAHE.Text;
String DaysTakenToDate = TxtDTTD.Text;
OleDbCommand Query = new OleDbCommand("INSERT INTO Employee (PayrollNo, FirstName, LastName, AnnualHolidayEntitlement, DaysTakenToDate) Values(@PayrollNo, @FirstName, @LastName, @AnnualHolidayEntitlement, @DaysTakenToDate");
Query.Connection = Conn;
Conn.Open(); //THIS IS WHERE THE ERROR OCCURS IN CODEPROSSESS
if (Conn.State == ConnectionState.Open)
{
Query.Parameters.Add("@PayrollNo", OleDbType.VarChar).Value = PayrollNo;
Query.Parameters.Add("@FirstName", OleDbType.VarChar).Value = FirstName;
Query.Parameters.Add("@LastName", OleDbType.VarChar).Value = LastName;
Query.Parameters.Add("@AnnualHolidayEntitlement", OleDbType.VarChar).Value = AnnualHolidayEntitlemet;
Query.Parameters.Add("@DaysTakenToDate", OleDbType.VarChar).Value = DaysTakenToDate;
try
{
Query.ExecuteNonQuery();
MessageBox.Show("Data Added Successfully");
Conn.Close();
}
catch (OleDbException ex)
{
MessageBox.Show(ex.Message);
Conn.Close();
}
}
else
{
MessageBox.Show("Connection Failed");
}
}
安装 AccessDatabaseEngine 并重试。
如下更改连接字符串。
Conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;DataSource=|DataDirectory|\HoliPlanData.accdb;Trusted_Connection = True;";
两个问题:
- 正如您在上面的评论中指出的那样,您的连接字符串多了一个分号
- 您的 INSERT 查询缺少最后一个括号 )
比较这些行:
OleDbCommand Query = new OleDbCommand("INSERT INTO Employee (PayrollNo, FirstName, LastName, AnnualHolidayEntitlement, DaysTakenToDate) Values(@PayrollNo, @FirstName, @LastName, @AnnualHolidayEntitlement, @DaysTakenToDate");
OleDbCommand Query = new OleDbCommand("INSERT INTO Employee (PayrollNo, FirstName, LastName, AnnualHolidayEntitlement, DaysTakenToDate) Values(@PayrollNo, @FirstName, @LastName, @AnnualHolidayEntitlement, @DaysTakenToDate)");