我知道这可能是一个老问题,但是我对使用存储过程获取“受影响的行数”感到困惑。
这是我的代码:
public DataSet saveuser(string procedure, string username, string password)
{
SqlConnection connection = new SqlConnection();
SqlCommand command = new SqlCommand(procedure, connection);
command.Parameters.AddWithValue("@username", username);
command.Parameters.AddWithValue("@password", password);
SqlAdapter adapter = new SqlAdapter(command);
DataSet dataset = new DataSet();
adapter.Fill(dataset);
connection.Close();
return dataset,
}
我尝试了以下代码:
int rowschanged = command.ExecuteNonQuery();
这似乎对我有帮助,但是当我检查数据库插入两次时。
你有什么主意吗?我可以使用SqlDataAdapter
获取受影响的行数吗?
答案 0 :(得分:1)
“受影响的行数”是查询本身的返回值,您可以做的是更改SP,如果成功则返回0,否则返回-1(当然可以是任何其他值,您将需要在SP代码中执行某种错误验证)
答案 1 :(得分:0)
我不确定您为什么要返回DataSet 如果您使用DataSet,这里的任何方法都是解决方案
public DataSet saveuser(string procedure, string username, string password)
{
SqlConnection connection = new SqlConnection();
SqlCommand command = new SqlCommand(procedure, connection);
command.Parameters.AddWithValue("@username", username);
command.Parameters.AddWithValue("@password", password);
SqlDataAdapter adapter = new SqlDataAdapter(command);
DataSet dataset = new DataSet();
connection.Open();
adapter.Fill(dataset);
var count = dataset.Tables?[0].Rows.Count;
connection.Close();
return dataset;
}
,如果要使用DataTable
public DataTable SaveuserwithDataTable(string procedure, string username, string password)
{
SqlConnection connection = new SqlConnection();
SqlCommand command = new SqlCommand(procedure, connection);
command.Parameters.AddWithValue("@username", username);
command.Parameters.AddWithValue("@password", password);
SqlDataAdapter adapter = new SqlDataAdapter(command);
DataTable dt = new DataTable();
connection.Open();
adapter.Fill(dt);
var count = dt.Rows.Count;
connection.Close();
return dt;
}
希望有帮助!