0

「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 句に入るため、文字列への変換が機能しません

何がうまくいかないのですか?なんで?どんな助けでも大歓迎です、ありがとう。

4

2 に答える 2

1

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();   

}
于 2016-02-24T10:23:12.593 に答える
1

問題はパラメータ @PayrollNo にあります。変数 PassPayrollNo がテーブルの PayrollNo と同じタイプであることを確認する必要があります。使用しているタイプを示していただければ、さらにお手伝いいたします。

于 2016-02-24T09:48:26.647 に答える