我使用此代码更新数据库表中的数据。 可以重用相同的代码来更新数据集吗? 感谢。
using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["Northwind"].ConnectionString))
{
string sql = "UPDATE tbh_Categories SET Title = @Title,
Description = @Description
WHERE CategoryID = @CategoryID";
SqlCommand cmd = new SqlCommand(sql, cn);
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("@CategoryID", SqlDbType.Int).Value = category.ID;
cmd.Parameters.Add("@Title", SqlDbType.NVarChar).Value = category.Title;
cmd.Parameters.Add("@Description", SqlDbType.NVarChar).Value = category.Description;
cn.Open();
int ret = cmd.ExecuteNonQuery();
return (ret == 1);
}
答案 0 :(得分:0)
完全相同的代码?不.SqlConnection(和SqlCommand)特定于SqlServer。 DataSet存在于该上下文之外,因此您必须重写代码以适应更新DataSet。
答案 1 :(得分:0)
不,我不这么认为。循环遍历DataTable
的行,或更新数据库并重新加载。
答案 2 :(得分:0)
答案是否定的。但是,您可以使用DataTable.Select标识要更新的DataTable中的行。但是你必须“手动”修改实际的表本身。
我必须问你要做什么...例如,你是否尝试使用可更新的DataSet缓存一些数据?或者您是否试图避免额外的数据库访问?如果您告诉我们,可能有更好的方法来做您想要做的事情。如果您想要一个内存数据库,那么are lots out there。
每条评论:查看SQLite。有.NET Wrappers可以让你做你想做的事。
答案 3 :(得分:0)
您必须稍微更改一下代码。您应该使用SqlDataAdapter的实例并使用它的Update方法。来自MSDN的小code sample:
public DataSet CreateCmdsAndUpdate(string connectionString,
string queryString)
{
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = new OleDbCommand(queryString, connection);
OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);
connection.Open();
DataSet customers = new DataSet();
adapter.Fill(customers);
//code to modify data in dataset here
adapter.Update(customers);
return customers;
}
}