检查插入是否成功 ASP.NET 存储过程



我知道这可能是一个老问题,但我对使用存储过程获得"受影响的行计数"感到困惑。

这是我的代码:

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获得受影响的行数吗?

"受影响的行计数"是查询本身的返回,您可以做的是更改 SP,如果成功则返回 0,如果成功则返回 -1(当然可以是任何其他值,您需要在 SP 代码中执行某种错误验证(

我不确定你为什么要返回数据集 如果您使用数据集,这里就是解决方案。

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

如果你想使用数据表

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

希望这个帮助!!

最新更新