Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我的SQLiteDataAdapter.UpdateCommand有什么问题?_C#_Winforms_Sqlite - Fatal编程技术网

C# 我的SQLiteDataAdapter.UpdateCommand有什么问题?

C# 我的SQLiteDataAdapter.UpdateCommand有什么问题?,c#,winforms,sqlite,C#,Winforms,Sqlite,我在这里试过,但不起作用。锦标赛名称返回null,champion+runnerup恢复为其原始值。。我做错了什么 在datagridview中编辑之前,DB Browser中有一条记录(datagridview绑定到datasetx): 在编辑datagridview中的所有字段并单击按钮1(我输入了name1、Tst5、Tst6,它应该已经更新了表格以显示name1、5、6)之后,这是相同的记录: 我之前说过RunnerUp的值不会改变。如果Champion和RunnerUp都更改,Ru

我在这里试过,但不起作用。锦标赛名称返回null,champion+runnerup恢复为其原始值。。我做错了什么

在datagridview中编辑之前,DB Browser中有一条记录(datagridview绑定到datasetx):

在编辑datagridview中的所有字段并单击按钮1(我输入了name1、Tst5、Tst6,它应该已经更新了表格以显示name1、5、6)之后,这是相同的记录:

我之前说过RunnerUp的值不会改变。如果Champion和RunnerUp都更改,RunnerUp的值不会更改。若Champion未更改,RunneRun将变为null


如果单击按钮而不更改任何值,则不会发生任何事情

顺便说一句,update命令不包含where子句(在main语句中…我不是在谈论子查询),因此每次执行都会更新现有的每一行。您需要在where子句中指定主键匹配。您正在将
SourceVersion
设置为
Original
值!这正是值“恢复”到原始值的原因,因为您正在设置参数以从dataSetx字段中提取原始值。只需将SourceVersion保留为默认值
DataRowVersion.Current
@CPerkins谢谢。我已经更新了问题的标题和正文,删除了SourceVersion的更改并没有产生任何效果。不幸的是,结果仍然是一样的。好的,你说的“锦标赛名称返回空值”是什么意思?这是否意味着您以后(使用其他代码或其他工具)查询数据库时,它现在为null,但以前不是null?更好的做法是包含样本数据。。。在代码执行前后显示数据库行。准确指出发生了什么变化。。。就像“编辑绑定到dataSetx的gridview控件中的值,然后执行显示的代码。然后我在DB Browser中查看表以检查更新的行…”。重点是解释发生了什么,否则大部分都是猜测。
adapter.Update(dataSetx)返回成功更新的行数。
adapter.UpdateCommand = new SQLiteCommand(
   "UPDATE SmashTournaments SET TournamentName = @TournamentName, Champion = (SELECT R1.SmashRosterID 
    FROM SmashRoster R1 WHERE CharacterName = @Champion)," +
                "RunnerUp = (SELECT R2.SmashRosterID FROM SmashRoster R2 WHERE CharacterName = @RunnerUp) WHERE TournamentID = @TournamentID", cnn);
adapter.UpdateCommand.Parameters.Add(
    "@TournamentName", DbType.String, 50, "TournamentName");
adapter.UpdateCommand.Parameters.Add(
    "@Champion", DbType.String, 50, "Champion");
adapter.UpdateCommand.Parameters.Add(
    "@RunnerUp", DbType.String, 50, "RunnerUp");
adapter.UpdateCommand.Parameters.Add(
    "@TournamentID", DbType.Int64, 3, "TournamentID");

adapter.Update(dataSetx);