SQL更新-不更新for循环中的多行 - c#

我有一个链接到SQlite数据库的DataGridView(DGV)。我想更新有关DGV的一些信息。因此,我有一个上下文菜单,该菜单使我可以更改一列并更新数据库。我希望能够选择多个行并进行编辑。例如:如果我选择五行并将类型从警报更改为错误;更改反映在DGV中,然后当我查看数据库时,更改未反映出来。仅更新一行。

我的代码段如下

foreach (DataGridViewRow r in dataGridView1.SelectedRows)
        {
            SQLiteTransaction SQLiteTrans = connection.BeginTransaction();
            SQLiteCommand cmd = connection.CreateCommand();
            MessageBox.Show(r.ToString());
            if (r.Cells["typeDataGridViewTextBoxColumn"].Value.ToString().Contains("#") == false)
            {
                r.Cells["typeDataGridViewTextBoxColumn"].Value = r.Cells["typeDataGridViewTextBoxColumn"].Value.ToString() + " # " + max;
            }
            else
            {
                r.Cells["typeDataGridViewTextBoxColumn"].Value = r.Cells["typeDataGridViewTextBoxColumn"].Value.ToString().Substring(0, r.Cells["typeDataGridViewTextBoxColumn"].Value.ToString().IndexOf("#")) + "# " + max;
            }
            string querytext = "Update LogDatabase set Type = \"" + r.Cells["typeDataGridViewTextBoxColumn"].Value + "\" where HashKey = \"" + r.Cells["hashKeyDataGridViewTextBoxColumn"].Value.ToString() + "\"";
            cmd.CommandText = querytext;
            cmd.ExecuteNonQuery();
            SQLiteTrans.Commit();    
        }

我没有太多的SQL经验。因此,我不确定我如何更新数据库是否有问题!

我必须进行什么编辑才能确保数据库中的所有行也都得到更新?

帮助表示赞赏。

编辑:尝试在查询发送之前检查查询。

当我尝试在DGV中编辑多行而不对任何列下的DGV进行排序时,它可以工作并同时更新所有行...但是当我尝试根据“类型”对它们进行排序然后编辑行时,将传递相同的查询! :| (哈希键不变)

就像这样,一行一直在行列表中向上移动,并且始终是for循环中的行r。

编辑2:绝对是DGV的行的问题
每次我对DGV进行排序,然后尝试编辑字段时,查询的哈希键值都与我选择的值不同。就像一次更新后行ID完全更改一样。看起来好像DGV在更新一行后自动排序!

有没有办法禁用此??!

参考方案

看来您没有增加最大计数器。

foreach (DataGridViewRow row in dataGridView1.SelectedRows)
{
using (SQLiteTransaction SQLiteTrans = connection.BeginTransaction())
{
    SQLiteCommand cmd = connection.CreateCommand();
    MessageBox.Show(row.ToString());

    var txtValue = row.Cells["typeDataGridViewTextBoxColumn"].Value;
    if (txtValue.Contains("#"))
    {
        txtValue = String.Format("{0} # {1}", txtValue, max);
    }else
    {
        txtValue = txtValue.SubString(0, txtValue.IndexOf("#")) + "# " + max.ToString();
    }
    string querytext = "Update LogDatabase set Type = @type where HashKey = @key";
            //Create your SqlParameters here!
    cmd.CommandText = querytext;
    cmd.ExecuteNonQuery();
    SQLiteTrans.Commit();    
    max++; //You weren't increasing your counter!!
}
}

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

改造正在返回一个空的响应主体 - java

我正在尝试使用Retrofit和Gson解析一些JSON。但是,我得到的响应机构是空的。当我尝试从对象中打印信息时,出现NullPointerException。我确保URL正确,并且我也确保POJO也正确。我正在使用jsonschema2pojo来帮助创建POJO类。这是我要解析的JSON{ "?xml": { "@versi…

SQLAlchemy中的反射不适用于MS SQL Server系统表吗? - python

我试图在MS SQL Server数据库中反映系统表:from sqlalchemy import engine, create_engine, MetaData, Table meta = MetaData() url = engine.url.URL( "mssql+pyodbc", username=credentials[…

Sqlite WHERE子句使用参数 - c#

尝试使用where子句运行特定查询,这就是我所拥有的。//ID is user input could be anything SqliteParameter Identifier = new SqliteParameter ("@ID", ID); string SQLText = "SELECT Email FROM Cli…

每个文件合并后添加换行 - python

我有很多类似以下内容的JSON文件:例如。1.json{"name": "one", "description": "testDescription...", "comment": ""} test.json{"name"…