我遇到了关于从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();
}
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
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();
}