C# 如何将一个用户的多行公共ID(主键)插入SQL Server数据库?
我想以Asp.net的形式获取教育资格记录。因为我要考10、12班的成绩,毕业,硕士。所以我为这个创建了四行。。。和5列(考试年份、委员会、百分比、总分、部门) 现在,我想通过在所有四个记录中维护一个用户的主键common,通过单击按钮插入数据库中的所有行C# 如何将一个用户的多行公共ID(主键)插入SQL Server数据库?,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我想以Asp.net的形式获取教育资格记录。因为我要考10、12班的成绩,毕业,硕士。所以我为这个创建了四行。。。和5列(考试年份、委员会、百分比、总分、部门) 现在,我想通过在所有四个记录中维护一个用户的主键common,通过单击按钮插入数据库中的所有行 请帮助我使用代码(C#)您可能需要查看如何使用组合主键。这是一个主键,它使用多个列组成一个键。这一战略有赞成和反对的理由。见: 例如,如果您的表如下所示: CREATE TABLE [dbo].[StudentExam] ( [Stu
请帮助我使用代码(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;
在超级代码中传递DT…它将完全工作您可以执行多个插入查询。这就是你要做的。多重插入查询的问题是。。。我已经把studentID列作为主键,也作为识别键。对于多重插入查询,每次都会更改它,并导致重复值。你也可以给我建议另一种解决方案。谢谢,您应该将主键与studentqualification表分开,并将其用作studentqualification表中的外键。这样你就不会面对这个问题。如果您可以共享代码和表结构,以便为您的问题提供适当的解决方案,那就更好了。实际上,我正在尝试上载我的代码和表单的图像。但是每次堆栈溢出应用程序崩溃时。在那之前,我会像你说的那样,通过创建两个表来实现你的想法。谢谢您可能不需要多个表,这取决于您当前使用的表的用途。为了澄清,我知道总共有六列:(学生ID、毕业年份、董事会、百分比、总分、部门)。这是正确的吗?