Sql 服务器过程 select 作为插入过程的警报

Sql server procedure select as Alert for insert procedure

我有一个 table 和两个字段。 它们的值通过 ajax 发送到 webmethod。 myCollection 是数组,其中包含 table 中的列值,lvl 是第一个字段的值,ddl 是第二个字段的值。 这些值需要使用 "InsertObject" 过程插入到数据库中。 现在我有一个 int 成功将值 1 发送到 ajax 然后我警告说数据已成功插入数据库,如果它是 0 比我警告它不是。

我在 InsertObject 过程中有一个循环,它应该检查数据库中是否已经存在特定的元素组合,如果它们存在,它 return select "Record already exist"。

我需要这方面的帮助 select。它应该以某种方式发送到 webmethod 和 ajax 这样我就可以提醒用户他尝试的新组合和元素无法保存到数据库中。

有人可以帮忙解决这些问题吗? 提前致谢!

 [WebMethod(EnableSession = true)]
        public static int GetCollection(List<myCollection> omyCollection, int ddl, string lvl)
        {   //Datatable is filled with foreach loop

        DataTable tableMain = new DataTable();
        tableMain.Columns.Add("CharID");
        tableMain.Columns.Add("CharaValue");

        foreach (myCollection mycol in omyCollection)
        {
            string label = mycol.label;
            string opis = mycol.opis;

            tableMain.Rows.Add(label, opis);

        }

        int success = 0;
        string conn = ConfigurationManager.ConnectionStrings["Connection"].ConnectionString;
        using (SqlConnection connection = new SqlConnection(conn))

            try
            {   
                //Check if values allready exist in the database 

                connection.Open();
                SqlCommand cmdCount = new SqlCommand("getDuplicate", connection);
                cmdCount.CommandType = CommandType.StoredProcedure;
                cmdCount.Parameters.AddWithValue("@ObjectName", lvl);


                var count = (string)cmdCount.ExecuteScalar();



                if (count == null)
                {
                    //Database insert
                    SqlCommand cmdProc = new SqlCommand("InsertObject", connection);
                    cmdProc.CommandType = CommandType.StoredProcedure;

                    //Parameters are sent to the database
                    cmdProc.Parameters.AddWithValue("@ObjectName", lvl);
                    cmdProc.Parameters.AddWithValue("@BCID", ddl);
                    cmdProc.Parameters.AddWithValue("@CharaValueParamether", tableMain);


                    cmdProc.ExecuteNonQuery();

                    //If the values are inserted send value 1 to ajax
                    success = 1;

                }

                else
                {

                }

            }

            catch
            {

            }
            finally
            {
                connection.Close();

            }

        return success;


    }

你只需要创建一个响应对象

public enum InsertStatus{
success = 0,
failure =1 
}
public class InsertResponse
{
 public InsertStatus status {get;set;}
 public string Message {get;set;}
 }

并且如果您发现多个条目 return 正在回复您只是创建一个具有失败状态的对象并设置 "Record already exist" 的消息并且如果您能够在数据库中插入记录然后设置状态成功并设置消息 "Record Inserted Successfully"

例如

     public static InsertResponse GetCollection(List<myCollection> omyCollection, int ddl, string lvl)
            { 
     // code
var count = (string)cmdCount.ExecuteScalar();
   if ( count >1 )
return new InsertResponse(){status =failure,Message = "Record Already Exists"};
// code

// similarly after success
return new InsertResponse(){status =success,Message = "Record Inserted"};
    }

您注意到我已将 return 类型的函数更改为插入响应。