![](/img/trans.png)
[英]Database table (re)design. Combine multiple rows into one and assign primary key. Microsoft 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.