是否可以使用SqlCommand将数据更新/插入数据集?

时间:2009-05-18 21:58:40

标签: asp.net sql dataset

我使用此代码更新数据库表中的数据。 可以重用相同的代码来更新数据集吗? 感谢。

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

4 个答案:

答案 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;
    }
}