【问题标题】:Checkboxes connected to database连接到数据库的复选框
【发布时间】:2019-08-09 23:55:00
【问题描述】:

我遇到了一个关于从 WPF 应用程序到 SQL 数据库的复选框的问题。

我已经到了可以将特定项目的值更新到数据库中的地步,但我只能更新值或从 0 到 1 或从 1 到 0,我正在搜索 IF 语句类型的事情,我认为我接近解决方案,但代码不起作用并给了我错误

“=”附近有错误

请帮忙。

private void Row_DoubleClick(object sender, MouseButtonEventArgs e)
{
    sqliteCon.Open();

    if (sqliteCon.State == System.Data.ConnectionState.Open)
    {
    var currentRowIndex = dataGrid1.Items.IndexOf(dataGrid1.CurrentItem);//PER IDENTIFICARE LA LINEA CORRENTE

    //PROVA5
    string q = @"UPDATE tabList
         SET selection = (CASE Prova
                            WHEN tabList.selection.Value = ' 0 '
                            THEN tabList.selection.Value = ' 1'
                            ELSE tabList.selection.Value = ' 0 '
                        END)
     WHERE idL = @CURRENT";


        SqlCommand cmd = new SqlCommand(q, sqliteCon);
    cmd.Parameters.AddWithValue("@CURRENT", currentRowIndex = currentRowIndex + 1);
    cmd.ExecuteNonQuery();
        MessageBox.Show("Dato Modificato");
    }

    sqliteCon.Close();
}

【问题讨论】:

  • 您可能不希望在查询中将值 0 和 1 用单引号括起来,因为它们是 BIT 值。
  • 我在我的数据库中有一个值为 0 的整列,如果我点击相应的复选框,我想将其更改为 1,如果该项目已被选中,我想更改为 0
  • 让我们看看我们是否可以让您发布的内容正常工作,然后我们可以看到如何修改您必须满足您的需求。

标签: c# sql wpf checkbox


【解决方案1】:

SQL 语句看不到复选框的值。就像您的 ID 值参数一样,您需要从复选框中提取它并将其应用于 sql 查询

var flagVal = WPFControl.selection.value == 1 ? 0 : 1;

//PROVA5
var q = @"UPDATE tabList
             SET selection = @NEWFLAG
             WHERE idL = @CURRENT";
cmd.Parameters.AddWithValue("@NEWFLAG", flagVal);

... rest of your code 

【讨论】:

    【解决方案2】:
     private void Row_DoubleClick(object sender, MouseButtonEventArgs e)
        {
    
            sqliteCon.Open();
    
            if (sqliteCon.State == System.Data.ConnectionState.Open)
            {
    
                var currentRowIndex = dataGrid1.Items.IndexOf(dataGrid1.CurrentItem);//PER IDENTIFICARE LA LINEA CORRENTE
    
    
                string q = @"UPDATE tabList
                             SET selection = (CASE 
                                                WHEN (SELECT selection FROM tabList where idL = @CURRENT) = 0
                                                THEN 1
                                                ELSE 0
                                              END)
                             WHERE idL = @CURRENT";
    
    
                SqlCommand cmd = new SqlCommand(q, sqliteCon);
                currentRowIndex = currentRowIndex + 1;
                cmd.Parameters.AddWithValue("@CURRENT", currentRowIndex);
                cmd.ExecuteNonQuery();
                MessageBox.Show("Dato Modificato");
    
            }
            sqliteCon.Close();
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-22
      • 1970-01-01
      • 2020-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-13
      相关资源
      最近更新 更多