C# 从访问数据库中删除行/将字符串转换为整数

本文关键字:字符串 转换 整数 删除行 访问 数据库 | 更新日期: 2023-09-27 18:35:56

我是一名新手程序员,试图使用"DELETE FROM"查询从AccessDatabase中删除一行。它需要将字符串转换为 Int 这是出现问题的地方

这是我正在运行的代码:

private void BtnDelete_Click(object sender, EventArgs e)
{
    OleDbConnection Conn = new OleDbConnection();
    Conn.ConnectionString = @"Provider = Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|''HoliPlanData.accdb;Persist Security Info=False";
    try
    {
         Conn.Open();
            String Query = "DELETE * FROM [Employee] WHERE PayrollNo = @PayrollNo";
            OleDbCommand DoDelete = new OleDbCommand(Query, Conn);
            String PayrollNo = PassPayrollNo;
            int PayRowNum = 0;
            bool isValid = int.TryParse(PassPayrollNo, out PayRowNum);
            if (isValid)
            {
                DoDelete.Parameters.AddWithValue("@PayrollNo", PayRowNum);
                DoDelete.ExecuteNonQuery();
                MessageBox.Show("Success");
                Conn.Close();   
            }
            else
            {
                MessageBox.Show("Could not convert to string");
                Conn.Close();
            }         
}

当我运行它时,我进入了 Else 子句,因此转换为字符串不起作用

出了

什么问题?为什么?任何帮助将不胜感激,谢谢。

C# 从访问数据库中删除行/将字符串转换为整数

尝试传递 int 类型参数:

int payrowNum = 0;
bool isValid = int.TryParse(PassPayrollNo, out payrowNum);
if(isValid)
{
     string sQuery = "DELETE * FROM [Employee] WHERE PayrollNo = @PayrollNo";
     OleDbCommand DoDelete = new OleDbCommand(sQuery, Conn);
     DoDelete.Parameters.AddWithValue("@PayrollNo", payrowNum);
     int rowsAffected = DoDelete.ExecuteNonQuery();
     if(rowsAffected>0)
     {
         MessageBox.Show("Success");
     }
     Conn.Close();   
}

问题在于您的参数@PayrollNo,您必须确保变量 PassPayrollNo 与表中的 PayrollNo 类型相同。如果您显示您正在使用的类型,我们可以尝试为您提供更多帮助。