代码之家  ›  专栏  ›  技术社区  ›  Mert

使用存储过程检查ASP.NET中的插入是否成功

  •  0
  • Mert  · 技术社区  · 6 年前

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

    这是我的代码:

    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 ?

    2 回复  |  直到 6 年前
        1
  •  1
  •   João Cardoso    6 年前

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

        2
  •  0
  •   khaled Dehia    6 年前

    我不知道你为什么要返回数据集 这里的任何方法都是解决方案,如果您使用数据集

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

    希望能帮上忙!!