复选框连接到数据库

问题描述 投票:0回答:2

我遇到了关于从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();
}
c# sql wpf checkbox
2个回答
2
投票

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 

0
投票
 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();
    }
© www.soinside.com 2019 - 2024. All rights reserved.