【问题标题】:Delete Button from Form Posting从表单发布中删除按钮
【发布时间】:2011-01-26 09:20:16
【问题描述】:

我有一张桌子 AVUKAT Columns--> HESAP, MUSTERI, AVUKAT

这是我的删除按钮代码

protected void Delete_Click(object sender, EventArgs e)
        {
            string strConnectionString = ConfigurationManager.ConnectionStrings["SqlServerCstr"].ConnectionString;

            SqlConnection myConnection = new SqlConnection(strConnectionString);
            myConnection.Open();


            string hesap = Label1.Text;
            string musteriadi = DropDownList1.SelectedItem.Value;
            string avukat = DropDownList2.SelectedItem.Value;

            SqlCommand cmd = new SqlCommand("DELETE FROM AVUKAT WHERE (@HESAP, @MUSTERI, @AVUKAT)", myConnection);

            cmd.Parameters.AddWithValue("@HESAP", hesap);
            cmd.Parameters.AddWithValue("@MUSTERI", musteriadi);
            cmd.Parameters.AddWithValue("@AVUKAT", avukat);
            cmd.Connection = myConnection;

            SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
            Grid_Goster.DataSource = dr;
            Grid_Goster.Visible = true;
            myConnection.Close();
        }

但它会产生这样的错误。

Server Error in '/' Application.
An expression of non-boolean type specified in a context where a condition is expected, near ','.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.SqlClient.SqlException: An expression of non-boolean type specified in a context where a condition is expected, near ','.
Source Error:
Line 83:             cmd.Connection = myConnection;
Line 84: 
Line 85:             SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
Line 86:             Grid_Goster.DataSource = dr;
Line 87:             Grid_Goster.Visible = true;

我找不到错误.. 在哪里?

【问题讨论】:

    标签: c# asp.net database sqldatareader sql-delete


    【解决方案1】:

    你的sql命令目前是DELETE FROM AVUKAT WHERE (@HESAP, @MUSTERI, @AVUKAT)

    这需要根据实际表更改为有效的删除命令。根据你上面写的,它需要是:

    DELETE FROM AVUKAT 
    WHERE HESAP = @HESAP AND 
          MUSTERI = @MUSTERI AND 
          AVUKAT = @AVUKAT
    

    【讨论】:

    • 非常正确..另外你最好在使用后处理连接和命令。
    • 是的,那将是一件好事。但这不是导致此错误的原因。
    • 谢谢,它工作正常。但是现在出现了另一个错误,例如“DataSource 和 DataSourceID 都在 'Gridview1' 上定义”但是没有 DataSource 属性:我很困惑..
    • 用您的 GridView 标记和错误消息发布一个新问题
    【解决方案2】:

    您的 SQL 错误,您没有给出布尔条件来指定应该删除哪些行。

    如果您想在所有这些参数都为真的情况下删除:

    DELETE FROM AVUKAT 
    WHERE HESAP = @HESAP
    AND MUSTERI = @MUSTERI 
    AND AVUKAT = @AVUKAT
    

    或者,如果您想根据这些参数中的任何一个为真进行删除:

    DELETE FROM AVUKAT 
    WHERE HESAP = @HESAP
    OR MUSTERI = @MUSTERI 
    OR AVUKAT = @AVUKAT
    

    【讨论】:

      【解决方案3】:

      您需要在 SQL 语句中提供布尔表达式。例如:

      SqlCommand cmd = new SqlCommand("DELETE FROM AVUKAT WHERE @HESAP = 'foobar' AND @MUSTERI > 0 AND @AVUKAT <> 42")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-05
        • 1970-01-01
        • 2019-03-23
        • 2010-10-14
        • 1970-01-01
        相关资源
        最近更新 更多