Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.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# 数据适配器更新问题_C#_Ado.net_Dataadapter - Fatal编程技术网

C# 数据适配器更新问题

C# 数据适配器更新问题,c#,ado.net,dataadapter,C#,Ado.net,Dataadapter,以下编码不会更新我的表。但行变量值在更新后为1。 我不明白这背后的原因是什么。请帮忙 SqlConnection connection1 = new SqlConnection(connectionString); connection1.Open(); var wktbl = new DataTable(); var cmd = new SqlCommand("SELECT * FROM Test", connection1); var da1 = new SqlDataAdapter(c

以下编码不会更新我的表。但行变量值在更新后为1。 我不明白这背后的原因是什么。请帮忙

SqlConnection connection1 = new SqlConnection(connectionString);
connection1.Open();

var wktbl = new DataTable();

var cmd = new SqlCommand("SELECT * FROM Test", connection1);
var da1 = new SqlDataAdapter(cmd);
var b = new SqlCommandBuilder(da1);
da1.Fill(wktbl);

wktbl.Rows[0][2] = "5";
da1.UpdateCommand = b.GetUpdateCommand(true);

int rows = da1.Update(wktbl);
退房。它显示了下面使用dataadapter进行更新的示例

下面的示例演示如何通过显式设置DataAdapter的UpdateCommand并调用其Update方法来对修改的行执行更新。请注意,UPDATE语句的WHERE子句中指定的参数设置为使用SourceColumn的原始值。这很重要,因为当前值可能已被修改,并且可能与数据源中的值不匹配。原始值是用于从数据源填充数据表的值


我发现了问题。这是因为connectionString具有| DataDirectory |。 运行应用程序时,MDF文件位置不同

private static void AdapterUpdate(string connectionString)
{
    using (SqlConnection connection =
           new SqlConnection(connectionString))
{
    SqlDataAdapter dataAdpater = new SqlDataAdapter(
      "SELECT CategoryID, CategoryName FROM Categories",
      connection);

    dataAdpater.UpdateCommand = new SqlCommand(
       "UPDATE Categories SET CategoryName = @CategoryName " +
       "WHERE CategoryID = @CategoryID", connection);

    dataAdpater.UpdateCommand.Parameters.Add(
       "@CategoryName", SqlDbType.NVarChar, 15, "CategoryName");

    SqlParameter parameter = dataAdpater.UpdateCommand.Parameters.Add(
      "@CategoryID", SqlDbType.Int);
    parameter.SourceColumn = "CategoryID";
    parameter.SourceVersion = DataRowVersion.Original;

    DataTable categoryTable = new DataTable();
    dataAdpater.Fill(categoryTable);

    DataRow categoryRow = categoryTable.Rows[0];
    categoryRow["CategoryName"] = "New Beverages";

    dataAdpater.Update(categoryTable);

    Console.WriteLine("Rows after update.");
    foreach (DataRow row in categoryTable.Rows)
    {
        {
            Console.WriteLine("{0}: {1}", row[0], row[1]);
        }
    }
}
}