0

我有一个表单,可以通过单击、人员、教育、经验、参考将数据发送到多个表。

如何将数据添加到多个表中,以便所有表中都有相同的人员 ID,

我是新手,使用层架构,所有数据库代码都在 DAL 中,,)使用 Asp 2.0

我正在考虑使用插入到 Person 并获取 PersonID 输出参数的存储过程来执行此操作,但我不知道如何使用该输出参数插入到其他表中。

我的示例代码是这样的

public virtual bool AddJobApplication(int JobID, string Name, string FatherName, string Phone, string Email, string Address, int AppID) {

            obj_db2.objCmd.CommandText = "AddApplication";
            obj_db2.objCmd.CommandType = CommandType.StoredProcedure;
            obj_db2.objCmd.Parameters.AddWithValue("JjobID", JobID);
            obj_db2.objCmd.Parameters.AddWithValue("@Name", Name);
            obj_db2.objCmd.Parameters.AddWithValue("@FName", FatherName);
            obj_db2.objCmd.Parameters.AddWithValue("@Email", Email );
            obj_db2.objCmd.Parameters.AddWithValue("@Address", Address);
            obj_db2.objCmd.Parameters.AddWithValue("@Phone", Phone);
            SqlParameter param = new SqlParameter("@AppID", AppID);
            param.Direction = ParameterDirection.Output;
            param.ParameterName = "@AppID";
            param.DbType = DbType.Int32;
            obj_db2.objCmd.Parameters.Add(param);
            obj_db2.objCmd.ExecuteNonQuery();

}

我在 DAL 中有这个函数,我将参数作为输出参数,我知道我可以从后面的代码访问这个 AddJobApplication 以输入表单信息,但没有得到如何使用这个输出插入的要点,对不起,如果我正在服用非常低级别,但我需要帮助。

4

2 回答 2

0

存储过程是解决此问题的正确方法。存储过程到位后,您将在插入方法中定义输出参数。

下面是一个示例,说明如何插入博客文章然后取回 SQL 创建的 ID。

示例(插入博客文章):

 public int InsertArticle(ArticleItem articleitem)
    {
        SqlParameter articleid = new SqlParameter(Parameters.ArticleID, SqlDbType.Int);
        articleid.Direction = ParameterDirection.Output;

        SqlHelper.ExecuteNonQuery(Conn, CommandType.StoredProcedure, INSERT_ARTICLE,
                                  new SqlParameter(Parameters.Body, articleitem.Body),
                                  new SqlParameter(Parameters.Category, articleitem.Category),
                                  new SqlParameter(Parameters.ExpireDate, articleitem.ExpireDate),
                                  new SqlParameter(Parameters.PublishDate, articleitem.PublishDate),
                                  new SqlParameter(Parameters.Published, articleitem.Published),
                                  new SqlParameter(Parameters.Section, articleitem.Section),
                                  new SqlParameter(Parameters.Title, articleitem.Title),
                                  articleid);
        return (int)articleid.Value;
    }

调用代码

public void InsertAllTheThings()
{
    var articleId = InsertArticle(articleItem); //Insert an article, return the ID
    //Once you have the id, use it as needed.
    var data = new SomeAwesomeData();
    data.ArticleID = articleId;
    data.IsAwesome = true;
    InsertSomeRelatedData(data);
}   
于 2013-02-12T17:17:32.430 回答
0

这实际上取决于已建立的架构。

如果更简单,您可能只返回新记录的标识,而不是使用输出参数:

INSERT INTO Person (
    FirstName,
    LastName
)
VALUES (
    'James',
    'Johnson'
)

SELECT @@IDENTITY --return the identifier of the new record

If you're going to be updating multiple tables though, make sure that it's all done in the scope of a single transaction.

于 2013-02-12T17:20:55.250 回答