Флажки, подключенные к базе данных - PullRequest
0 голосов
/ 19 марта 2019

Я застрял с проблемой, связанной с флажками из приложения WPF в базу данных SQL.

Я достиг точки, где я могу обновить значение определенного элемента в базе данных, но я могутолько обновите значение или с 0 до 1 или с 1 до 0, я ищу что-то вроде IF Statement, и я думаю, что я близок к решению, но код не работает и выдает ошибку

"рядом с ошибкой ="

Пожалуйста, помогите.

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();
}

Ответы [ 2 ]

2 голосов
/ 19 марта 2019

Оператор SQL не может видеть значение флажка.Как и в случае вашего параметра для значения идентификатора, вам нужно будет извлечь это из флажка и применить ТО к 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 голосов
/ 19 марта 2019
 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();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...