0

我有以下代码并且没有将记录更新到数据库。

 SqlDataAdapter da = new SqlDataAdapter("spInvent",cs);
 da.UpdateCommand.CommandType = System.Data.CommandType.StoredProcedure;
 da.UpdateCommand.Parameters.AddWithValue("@DisplayNo", displayNo);
 da.UpdateCommand.Parameters.AddWithValue("@Q", Q);
 da.UpdateCommand.ExecuteNonQuery();

 DataSet ds = new DataSet();

 da.Fill(ds);
 gvInfo.DataSource = ds;
 gvInfo.DataBind();

我在这里收到错误:

da.UpdateCommand.CommandType = System.Data.CommandType.StoredProcedure;
4

3 回答 3

4

正确的语法是:

using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Configuration;

SqlConnection cs = new
SqlConnection(ConfigurationManager.ConnectionStrings["myConnection"].ConnectionString);
if (cs.State == ConnectionState.Closed) {
    cs.Open();
}
SqlCommand cmd = new SqlCommand();
cmd.Connection = cs;
cmd.CommandText = "UpdateStoredProcedureName";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@DisplayNo", displayNo);
cmd.Parameters.AddWithValue("@Q", Q);
int result = cmd.ExecuteNonQuery();

if (result > 0) {
    //Your Database is updated. To show it in gridview, you have
    //to select the table and show its data.
    SqlCommand cmd1 = new SqlCommand();
    cmd1.Connection = cs;
    cmd1.CommandText = "SelectStoredProcedureName";
    cmd1.CommandType = CommandType.StoredProcedure;
    cmd1.Parameters.AddWithValue("@displayId", 0);

    //In the SelectStoredProcedure, use @displayId = 0 to 
    //show all rows.

    SqlDataAdapter adpt = new SqlDataAdapter();
    adpt.SelectCommand = cmd1;
    DataSet ds = new DataSet();
    adpt.Fill(ds);
    cs.Close();
    GridViewID.DataSource = ds;
    GridViewId.DataBind();
} else {
    cs.Close();
}
于 2013-06-27T17:28:07.827 回答
0

我相信你的问题是你不应该执行你的查询然后填充你的数据集,你可以只填充你的数据集,所以:

SqlDataAdapter da = new SqlDataAdapter();
//updated to explicitly create update command object
SqlCommand update = new SqlCommand("spInvent",cs);
update.CommandType = System.Data.CommandType.StoredProcedure;
update.Parameters.AddWithValue("@DisplayNo", displayNo);
update.Parameters.AddWithValue("@Q", Q);
da.UpdateCommand = update;
//don't need this line:
//da.UpdateCommand.ExecuteNonQuery();

DataSet ds = new DataSet();

da.Fill(ds);
gvInfo.DataSource = ds;
gvInfo.DataBind();
于 2013-06-27T16:56:30.987 回答
0

这里有几件事:

  1. 您没有指定实际的UpdateCommand. 的构造函数SqlDataAdapter设置SelectCommand. 您需要指定用于更新数据的存储过程。
  2. 您不需要直接执行SelectCommandor - 当您使用 DataAdapter 填充or 调用它UpdateCommand时,DataAdapter 会自动执行此操作(GridView 可能会为您执行此操作,具体取决于您如何连接它)。DataSetUpdate()
于 2013-06-27T17:00:49.377 回答