在asp.net中使用主键插入外键

时间:2014-04-12 10:29:27

标签: c# asp.net sql

我正在使用C#在asp中创建一个表单,我的任务是创建一个课程和包详细信息并插入,我有三个表一个是包含Id(pk)和课程名称的课程,包表包含Id (pk)和pkg-name等表是包含Pkg-id(pk)的Pkg-detail,它是包在表中的Id的外键,其他属性是course-id,它是课程的外键(ID)和我的任务是当我从下拉菜单中选择pkg-name时,从asp表格的复选框中选择pkg-name的特定Id和课程名称的Id将插入第三表pkg-detail中,因为我是新的我已经搜索了很多但是不能找到相关的答案。

SqlCommand cmm = new SqlCommand("Pkc", con);

cmm.CommandType = CommandType.StoredProcedure;
cmm.Parameters.AddWithValue("@pname", drop1.SelectedValue);
cmm.Parameters.AddWithValue("@course", check1.SelectedValue);

con.Open();
cmm.ExecuteNonQuery();

con.Close();
CREATE PROCEDURE [dbo].[Pkc]
@course nvarchar(50),
@pname nvarchar(50)

AS 开始     插入Pkg(CourseId)值((从课程中选择Id,其中CourseName = @ course));     插入Pkg(PkgId)值((从PKgCode中选择Id,其中PkgName = @ pname))     端

1 个答案:

答案 0 :(得分:0)

你没有提到你的问题,但是从你的文本看来你想把courceID和PackageID传递给你的StoredProc,你的代码有问题,因为dropdown.SelectedValue是AddWithValue你的字符串你将添加两个string参数,而我认为它们应为integer。因此,将它们转换为int或使用接受参数类型的其他方法。

修改

根据评论,您的程序似乎应该是这样的:

CREATE PROCEDURE [dbo].[Pkc] @course nvarchar(50), @pname nvarchar(50) 
AS 
begin 
  declare @courceID int
  declare @pkgID int
  select @courceID = Id from Courses where CourseName=@course
  select @pkgID = Id from PKgCode where PkgName=@pname
  insert into Pkg-Detail(CourseId,PkgId) values(@courceID, @pkgID) 
end