C# 从数据集更新数据库
我的目标是更新每个SKU的C# 从数据集更新数据库,c#,asp.net,sql,database,dataset,C#,Asp.net,Sql,Database,Dataset,我的目标是更新每个SKU的数量。我正在使用SqlDataAdapter来实现这一点。程序运行良好。只是没有结果发生 问:为什么没有结果?我的数据库保持不变 代码如下 public static void updateInventoryfromAMZ(DataTable datatable) { int index = 0; string connString = System.Configuration.ConfigurationManager.Connectio
数量
。我正在使用SqlDataAdapter
来实现这一点。程序运行良好。只是没有结果发生
问:为什么没有结果?我的数据库保持不变
代码如下
public static void updateInventoryfromAMZ(DataTable datatable)
{
int index = 0;
string connString = System.Configuration.ConfigurationManager.ConnectionStrings["MyConnectionString"].ToString();
DataSet amzInventoryDataSet = new DataSet("AMZINVDATASET");
amzInventoryDataSet.Tables.Add(datatable);
// FOR EACH ROW - PERFORM AN UPDATE //
using (SqlConnection connection = new SqlConnection(connString))
{
SqlDataAdapter adapter = new SqlDataAdapter();
foreach (DataRow row in amzInventoryDataSet.Tables[index].Rows)
{
string sku = datatable.Rows[index]["seller-sku"].ToString();
string qty = datatable.Rows[index]["quantity"].ToString();
// Create the UpdateCommand.
SqlCommand command = new SqlCommand(
"UPDATE Inventory SET qty = @qty" +
"WHERE sku = @sku", connection);
// Add the parameters for the UpdateCommand.
command.Parameters.Add("@qty", SqlDbType.Int, qty.Length, qty);
command.Parameters.Add("@sku", SqlDbType.VarChar, sku.Length, sku);
adapter.UpdateCommand = command;
adapter.Update(amzInventoryDataSet.Tables[index]);
index++;
}
}
}
我认为你的问题在于这些方面:
"UPDATE Inventory SET qty = @qty" +
"WHERE sku = @sku", connection);
他们将产生一个字符串,如:
"UPDATE Inventory SET qty = @qtyWHERE sku = @sku", connection);
变量@qtyWHERE
未定义
请尝试以下方法:
"UPDATE Inventory SET qty = @qty WHERE sku = @sku", connection);
我认为你的问题在于这些方面:
"UPDATE Inventory SET qty = @qty" +
"WHERE sku = @sku", connection);
他们将产生一个字符串,如:
"UPDATE Inventory SET qty = @qtyWHERE sku = @sku", connection);
变量@qtyWHERE
未定义
请尝试以下方法:
"UPDATE Inventory SET qty = @qty WHERE sku = @sku", connection);
连接两个sql字符串时,最好在第一个字符串的末尾或第二个字符串的开头添加空格。正如Gordon Linoff指出的,您的sql语句是不正确的。此外,还需要根据参数的类型更改设置参数和值 尝试下面的代码,我已经使用
SqlCommand
和ExecuteNonQuery
方法来更新每行数据
using (SqlConnection connection = new SqlConnection(connString))
using (SqlCommand cmd = new SqlCommand("UPDATE Inventory SET qty = @qty WHERE sku = @sku", connection))
{
connection.Open();
var paramqty= cmd.Parameters.Add("@qty", SqlDbType.Int);
var parasku = cmd.Parameters.Add("@sku", SqlDbType.VarChar);
foreach (DataRow row in amzInventoryDataSet.Tables[0].Rows)
{
parasku.Value = row["seller-sku"].ToString();
paramqty.Value = int.Parse(row["quantity"].ToString());
cmd.ExecuteNonQuery();
}
}
连接两个sql字符串时,最好在第一个字符串的末尾或第二个字符串的开头添加空格。正如Gordon Linoff指出的,您的sql语句是不正确的。此外,还需要根据参数的类型更改设置参数和值 尝试下面的代码,我已经使用
SqlCommand
和ExecuteNonQuery
方法来更新每行数据
using (SqlConnection connection = new SqlConnection(connString))
using (SqlCommand cmd = new SqlCommand("UPDATE Inventory SET qty = @qty WHERE sku = @sku", connection))
{
connection.Open();
var paramqty= cmd.Parameters.Add("@qty", SqlDbType.Int);
var parasku = cmd.Parameters.Add("@sku", SqlDbType.VarChar);
foreach (DataRow row in amzInventoryDataSet.Tables[0].Rows)
{
parasku.Value = row["seller-sku"].ToString();
paramqty.Value = int.Parse(row["quantity"].ToString());
cmd.ExecuteNonQuery();
}
}
我想你错过了这个问题的问题部分。谢谢你提出我的观点。一票结束。我想你错过了这个问题的问题部分。“只是没有结果发生”谢谢你提出我的观点。一票结束。谢谢你的帮助。似乎对数据库仍然没有影响。感谢您的帮助。看起来对数据库仍然没有影响。工作正常!非常感谢!作品非常感谢!