Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 删除数据库中的行_C#_Sql Server_Winforms - Fatal编程技术网

C# 删除数据库中的行

C# 删除数据库中的行,c#,sql-server,winforms,C#,Sql Server,Winforms,我有下面的代码,但我似乎无法按照我想要的方式操作它。我希望命令在数据库中搜索与textbox2.text匹配的第一个条目,并删除该行 private void button4_Click(object sender, EventArgs e) { SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\DillPickle\Documents\

我有下面的代码,但我似乎无法按照我想要的方式操作它。我希望命令在数据库中搜索与
textbox2.text
匹配的第一个条目,并删除该行

private void button4_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\DillPickle\Documents\Data.mdf;Integrated Security=True;Connect Timeout=30");

    SqlDataAdapter sda = new SqlDataAdapter("Select Count(*) From ACCNT where ACCNTNUM=" + textBox2.Text , con);
    DataTable dt = new DataTable();
    sda.Fill(dt);

    if (dt.Rows[0][0].ToString() == "1")
    {
        ACCNT."txtbox2.text".Rows[0].Delete();
    }
    else
    {
        MessageBox.Show("The account does not exist in the record!");
    }
}

有很多方法可以完成你想做的事情;这里有一个方法:

private readonly string SqlConnectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\DillPickle\Documents\Data.mdf;Integrated Security=True;Connect Timeout=30";
private readonly string SqlDeleteQuery = "DELETE FROM ACCNT WHERE ACCNTNUM=@accountNumber";

private void button4_Click(object sender, EventArgs e)
{
    try
    {
        using (var sqlConnection = new SqlConnection(SqlConnectionString))
        using (var sqlCommand = sqlConnection.CreateCommand())
        {
            sqlConnection.Open();

            sqlCommand.CommandText = SqlDeleteQuery;
            sqlCommand.Parameters.AddWithValue("@accountNumber", textBox2.Text);

            sqlCommand.ExecuteNonQuery();
        }
    }  
    catch (Exception ex)
    {
        // Do something with the exception, like log it...
    }
}

1) 您的代码易受Sql注入攻击,2)您没有删除第一个条目,只有在只有一个匹配项时才删除它。噢,还有3)什么是
ACCNT.“txtbox2.text”
?您正在从数据表中删除,而不是从数据库本身中删除。此外,您的逻辑将始终返回零或一个结果。这个结果不是与你的账号相关的行,它只是一个包含该账号的行数。只需删除该行,然后检查有多少行受到影响,以确定它是否存在。这非常有效!非常感谢你的帮助。现在我知道了它的样子,我觉得我更了解这个函数了。没问题,很乐意帮忙。请不要忘记将其标记为已接受的答案,如果对您有帮助,请进行投票。:)