ASP.NET MVC 4에서 C# 및 SQL을 사용하여 작업하고 있습니다. 내가 처음 테이블에 데이터를 삽입 한 다음 Mem_Details
테이블에 Mem_Id
로 Mem_Basic
테이블에서 새로 삽입 된 ID를 삽입 할두 테이블에 차례로 데이터를 삽입하십시오.
CREATE TABLE [dbo].[Mem_Basic] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Mem_NA] VARCHAR (100) NOT NULL,
[Mem_Occ] VARCHAR (200) NOT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
및
CREATE TABLE [dbo].[Mem_Details] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Mem_Id] INT NOT NULL,
[Mem_Role] VARCHAR (250) NOT NULL,
[Mem_Email] VARCHAR (50) NULL,
[Mem_MPh] VARCHAR (15) NULL,
[Mem_DOB] DATE NULL,
[Mem_BGr] NCHAR (10) NULL,
[Mem_WAnn] DATE NULL,
[Mem_Spouse] VARCHAR (75) NULL,
[Mem_Web] VARCHAR (300) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
:
나는 두 개의 테이블이 동일한 만들기 버튼을 사용합니다.
그 후 첫 번째 테이블의 ID를 반환하고 싶습니다. 난 단지 첫 번째 테이블에 데이터를 삽입하고 아이디를 반환합니다 다음 C# 코드
public int CreateNewMember(string Mem_NA, string Mem_Occ)
{
using (SqlConnection con=new SqlConnection(Config.ConnectionString))
{
using (SqlCommand cmd = new SqlCommand("INSERT INTO Mem_Basic(Mem_Na, Mem_Occ) output INSERTED.Id VALUES(@na, @occ)", con))
{
cmd.Parameters.AddWithValue("@na", Mem_NA);
cmd.Parameters.AddWithValue("@occ", Mem_Occ);
con.Open();
int modified = (int)cmd.ExecuteScalar();
using (SqlCommand cmd1 = new SqlCommand("INSERT INTO Mem_Details (Mem_Id, Mem_Role) VALUES (@id, @role)", con))
{
cmd.Parameters.AddWithValue("@id", modified);
cmd.Parameters.AddWithValue("@role","Member");
}
if (con.State == System.Data.ConnectionState.Open) con.Close();
return modified;
}
}
}
이 사용하고 있습니다.
절대 ExecuteSca lar 두 번째 cmd –
int를 사용하는 경우 = (int) cmd1.ExecuteScalar(); 두 번째 cmd에서 스칼라 변수 "@id"를 선언해야 함을 보여줍니다. 그리고 만약 내가 두 번째 cmd ExecuteonQuery를 사용하면 두 번째 테이블에 데이터를 삽입하고 두 번째 테이블에 삽입하지 – neel
@ Parvathiiiii 대답 – Ehsan