-1

データベースに電子メールが存在するかどうかを確認し、返された値に基づいてさらにステートメントを実行したい.....私のコードは次のとおりです.....

private void deleterecordbutton_Click(object sender, EventArgs e)
        {
            if (deleterecordtextBox.Text != "")
            {
                MyOleDbConnection.Open();
                string vsql = string.Format("delete from login where Email='{0}'", deleterecordtextBox.Text);
                OleDbCommand vcom = new OleDbCommand(vsql, MyOleDbConnection.vcon);
                vcom.ExecuteNonQuery();
                MessageBox.Show("Record deleted successfully!!");
                MyOleDbConnection.Close();
                deleterecordtextBox.Clear();
                this.Close();
                this.ReferToLogindb.Show();
            }
            else
            {
                MessageBox.Show("No record selected");
            }
        }
4

3 に答える 3

0

クエリの実行後にレコードが削除されたかどうかだけを知りたい場合は、ExecuteNonQuery から戻り値を取得します。コマンドの影響を受けた行数を返します。

クエリに一致するレコードがない場合、戻り値はゼロになります
MSDN ドキュメントを参照してください

int recordsDeleted = vcom.ExecuteNonQuery();
if(recordsDeleted != 0)
   .....
else
   ....

ところで、コードには Sql インジェクションと呼ばれる潜在的な問題があり、接続が正しく閉じられないという問題が発生する可能性があります。次のように変更することをお勧めします。

using(OleDbConnection oleConn = GetConnection())
{
    oleConn.Open();
    string vsql = "delete from login where Email=@mail";
    OleDbCommand vcom = new OleDbCommand(vsql, oleConn);
    vcom.Parameters.AddWithValue("@mail", deleterecordtextBox.Text);
    int recordsDeleted = vcom.ExecuteNonQuery();
    if(recordsDeleted != 0)
        MessageBox.Show("Record deleted successfully!!");
    else
        MessageBox.Show("Record not found!");
 }
 deleterecordtextBox.Clear();
 ......
于 2013-03-26T16:33:24.243 に答える
0

メールアドレスを含む行数をカウントするデータベースでクエリを実行し、結果に対して条件ステートメントを実行して、1 以上かどうかを確認し、そうであれば他のコードを実行します。

于 2013-03-26T16:33:16.250 に答える
0

指定された他のすべての推奨事項を除き、次を変更します。

if (deleterecordtextBox.Text != "")

に:

if (deleterecordtextBox.Text !=string.Empty)
于 2013-03-26T16:57:37.480 に答える