2014-07-27 15 views
0

以下編碼不會更新我的表格。但更新後行變量值爲1。 我不明白這背後的原因是什麼。請幫忙。DataAdapter更新問題

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

回答

0

檢查this page out。它顯示了使用dataadapter進行更新的示例。

以下示例演示如何通過顯式設置DataAdapter的UpdateCommand並調用Update方法來更新修改的行。請注意,在UPDATE語句的WHERE子句中指定的參數被設置爲使用SourceColumn的原始值。這很重要,因爲當前值可能已被修改,可能與數據源中的值不匹配。原始值是用於從數據源填充DataTable的值。

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]); 
     } 
    } 
} 
} 
0

我發現這個問題。這是因爲connectionString有| DataDirectory |。 運行應用程序時,MDF文件位置不同。