c#OledbException处理错误

时间:2011-11-10 19:19:07

标签: c# exception-handling oledb

我尝试了很多可能的方法,但无济于事,现在我在捕获并抛出异常“OledbException未处理”。请指教谢谢!

(假设新数据输入都是字符串而不是整数。)

public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }

    private void Form2_Load(object sender, EventArgs e)
    {

    }

    private void button1_Click(object sender, EventArgs e)
    {
        //connect to database
        string strOleDbConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Project.mdb";
        OleDbConnection objConnection = new OleDbConnection(strOleDbConnectionString);

        objConnection.Open();
        string newTagID = textBox1.Text;
        string newUser = textBox2.Text;
        string newAge = textBox3.Text;
        string newPhoneNumber = textBox4.Text;

        string InsertNewRecord = "INSERT INTO jiahe ([Tag ID], [User], [Age], [Phone Number]) VALUES ('" + newTagID + "', '" + newUser + "', '" + newAge + "', '" + newPhoneNumber + "')";
        OleDbCommand InsertCommand = new OleDbCommand(InsertNewRecord, objConnection);

        try
        {
            InsertCommand.Parameters.Add("@[Tag ID]", newTagID);
            InsertCommand.Parameters.Add("@[User]", newUser);
            InsertCommand.Parameters.Add("@[Age]", newAge);
            InsertCommand.Parameters.Add("@[Phone Number]", newPhoneNumber);
            InsertCommand.ExecuteNonQuery();

            MessageBox.Show("Record Added!");
        }

        catch (OleDbException ex)
        {
            throw ex;
        }

        finally
        {
            objConnection.Close();
        }
    }
}

}

1 个答案:

答案 0 :(得分:1)

你的问题是:你为什么得到“OledbException未得到处理”。

所以问题的答案(但不是你的问题)是你用throw重新抛出异常。而不是那样做,像:

 MessageBox.Show(ex.ToString());

这将显示代码背后的真正错误,您将处理异常。

可能会发生oleDBException,因为您应该使用以下命令来定义SQL命令:

 string InsertNewRecord = "INSERT INTO jiahe ([Tag ID], [User], [Age], [Phone Number]) VALUES (?newTagID, ?newUser, ?newAge,?newPhoneNumber)";

然后其余的代码将设置那些参数替换命令中的@xxx和实际值。 AddParameter将添加引号,因此您不必添加。