簡體   English   中英

如何將一個具有公共ID(主鍵)的用戶的多行插入SQL Server數據庫?

[英]How to insert multiple rows of one user with common ID (primary key) into SQL Server database?

我想以我的Asp.net表格獲取教育資格記錄。 因為我要記錄10年級,12年級,畢業,碩士的記錄。 因此,我為此創建了四行...和5列(考試年份,考試,考試分數,總成績,除法)。

現在,我想通過一次單擊來插入數據庫中的所有行,方法是保持所有四個記錄中一個用戶的通用主鍵。

請幫我提供代碼(C#)

您可能想看看使用復合主鍵 這是一個主鍵,它使用多列組成一個鍵。 有支持和反對這種策略的論點。 請參閱: 使用多列主鍵的優缺點是什么?

例如,如果您的表如下所示:

CREATE TABLE [dbo].[StudentExam]
(
    [StudentId] INT NOT NULL PRIMARY KEY, 
    [Year] INT NOT NULL, 
    [Board] SOMEDATATYPE NOT NULL, 
    [Percentage] FLOAT NOT NULL, 
    [TotalMark] INT NOT NULL, 
    [Division] SOMEDATATYPE NOT NULL, 
)

您可以更改架構,使其看起來像這樣:

CREATE TABLE [dbo].[StudentExam]
(
    [StudentId] INT NOT NULL, 
    [Year] INT NOT NULL, 
    [Board] SOMEDATATYPE NOT NULL, 
    [Percentage] FLOAT NOT NULL, 
    [TotalMark] INT NOT NULL, 
    [Division] SOMEDATATYPE NOT NULL, 
    CONSTRAINT [PK_StudentExam] PRIMARY KEY ([StudentId], [Year])
)

這樣,您就聲明此表中的任何給定行均由“學生”和“年份”共同唯一標識。 您仍然可以僅查詢學生,也可以查詢年份,但是只有它們一起才能確定一行。

有關主鍵的更多信息,請參見創建主鍵。

在Sql中創建表類型

 CREATE TYPE [dbo].[TypeName] AS TABLE(
[name1] [varchar](1000) NULL,
[name2] [varchar](1000) NULL,
[name3] [varchar](max) NULL
)
GO

在SQL中創建過程:

 ALTER PROCEDURE [dbo].[InsertData]
 @TableType TypeName readonly
 AS 

   INSERT INTO [dbo].[Table_Master]
   (Tname1,Tname2,Tname3)
    select name1,name2,name3 from @TableType

然后轉到隱藏代碼

        OpenConnection();
        sqlcmd.CommandType = CommandType.StoredProcedure;
        sqlcmd.CommandText = spName;
        sqlcmd.Connection = sqlconn;

        SqlParameter tvpParam = sqlcmd.Parameters.AddWithValue("@Type", Your 
        Datatable); 
        tvpParam.SqlDbType = SqlDbType.Structured; 
        SqlParameter returnParameter = sqlcmd.Parameters.Add("RetVal", 
         SqlDbType.Int);
        returnParameter.Direction = ParameterDirection.ReturnValue;
        sqlcmd.ExecuteNonQuery();

        int Result = (int)returnParameter.Value;

        sqlcmd.Dispose();
        return Result;

通過Uper Code傳遞您的DT ...它將完全起作用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM