Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在sql server 2012中同时插入三个表_C#_Sql_Sql Server - Fatal编程技术网

C# 如何在sql server 2012中同时插入三个表

C# 如何在sql server 2012中同时插入三个表,c#,sql,sql-server,C#,Sql,Sql Server,我正在尝试为BSc做最后一个项目,为此我正在尝试用C#和SQLServer2012制作一个健身房管理系统。我有桌子 (instructors,salary,members(students), fees, schedules) 在注册新会员时,我想一次插入3个表(会员、费用、日程),但我不知道怎么做,我真的希望你们能帮助我找到一个简单的解决办法。 我应该编写什么查询来同时插入到所有三个表中。 此URL是我的C#表单的图片,请检查。 http://s502.photobucket.com/use

我正在尝试为BSc做最后一个项目,为此我正在尝试用C#和SQLServer2012制作一个健身房管理系统。我有桌子

(instructors,salary,members(students), fees, schedules)
在注册新会员时,我想一次插入3个表(会员、费用、日程),但我不知道怎么做,我真的希望你们能帮助我找到一个简单的解决办法。
我应该编写什么查询来同时插入到所有三个表中。 此URL是我的C#表单的图片,请检查。

http://s502.photobucket.com/user/ajmalajmal/media/membersdesign_zps83fd57c5.png.html?filters[用户]=139364694&过滤器[最近]=1&sort=1&o=1

这些是我在sql server中的表


http://s502.photobucket.com/user/ajmalajmal/media/tablessssssssssssss_zps14a56a9d.png.html?filters[user]=139364694&filters[recent]=1&sort=1&o=0据我所知,只有在Oracle中才能在同一查询中插入多个表。我认为在SQL Server中无法做到这一点。

据我所知,只有在Oracle中才能在同一查询中插入多个表。我认为在SQL Server中无法做到这一点。

据我所知,只有在Oracle中才能在同一查询中插入多个表。我认为在SQL Server中无法做到这一点。

据我所知,只有在Oracle中才能在同一查询中插入多个表。我认为您不能在SQL Server中执行此操作。

您可以使用事务。这与立即写作并不完全相同,但我认为这正是你想要的

因此,在SaveButton_Click事件处理程序中,您可以执行以下操作:

BEGIN TRANSACTION

INSERT INTO members
(id, firstname, etc.)
VALUES (tbMemberID.text, tbFirstName.text, etc)

INSERT INTO fees
(id, amount, etc.)
VALUES (tbFeeID.text, tbAmount.text, etc)

INSERT INTO schedule
(id, session)
VALUES (tbScheduleID.text, tbSession.text)

COMMIT TRANSACTION
GO

您可以使用事务。这与立即写作并不完全相同,但我认为这正是你想要的

因此,在SaveButton_Click事件处理程序中,您可以执行以下操作:

BEGIN TRANSACTION

INSERT INTO members
(id, firstname, etc.)
VALUES (tbMemberID.text, tbFirstName.text, etc)

INSERT INTO fees
(id, amount, etc.)
VALUES (tbFeeID.text, tbAmount.text, etc)

INSERT INTO schedule
(id, session)
VALUES (tbScheduleID.text, tbSession.text)

COMMIT TRANSACTION
GO

您可以使用事务。这与立即写作并不完全相同,但我认为这正是你想要的

因此,在SaveButton_Click事件处理程序中,您可以执行以下操作:

BEGIN TRANSACTION

INSERT INTO members
(id, firstname, etc.)
VALUES (tbMemberID.text, tbFirstName.text, etc)

INSERT INTO fees
(id, amount, etc.)
VALUES (tbFeeID.text, tbAmount.text, etc)

INSERT INTO schedule
(id, session)
VALUES (tbScheduleID.text, tbSession.text)

COMMIT TRANSACTION
GO

您可以使用事务。这与立即写作并不完全相同,但我认为这正是你想要的

因此,在SaveButton_Click事件处理程序中,您可以执行以下操作:

BEGIN TRANSACTION

INSERT INTO members
(id, firstname, etc.)
VALUES (tbMemberID.text, tbFirstName.text, etc)

INSERT INTO fees
(id, amount, etc.)
VALUES (tbFeeID.text, tbAmount.text, etc)

INSERT INTO schedule
(id, session)
VALUES (tbScheduleID.text, tbSession.text)

COMMIT TRANSACTION
GO

虽然我不推荐,但触发器在这种情况下很方便。

虽然我不推荐,但触发器在这种情况下很方便。

虽然我不推荐,但触发器在这种情况下很方便。

虽然我不推荐,但触发器在这种情况下很方便这。

您可以创建视图合并来自这三个表的数据 然后使用而不是trigger使用一条insert语句将数据插入到这些表中

创建三个表

CREATE TABLE TableA(
[PrimaryKey] [int] IDENTITY(1,1) NOT NULL,
[FieldA] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_TableA] PRIMARY KEY CLUSTERED ([PrimaryKey] ASC)
) ON [PRIMARY]

CREATE TABLE TableB(
[PrimaryKey] [int] IDENTITY(1,1) NOT NULL,
[FieldB] [nvarchar](50) NULL,
CONSTRAINT [PK_TableB] PRIMARY KEY CLUSTERED ([PrimaryKey] ASC)
) ON [PRIMARY]

CREATE TABLE TableC(
[PrimaryKey] [int] IDENTITY(1,1) NOT NULL,
[FieldC] [nchar](10) NOT NULL,
CONSTRAINT [PK_TableC] PRIMARY KEY CLUSTERED ([PrimaryKey] ASC)
) ON [PRIMARY]
创建视图

CREATE VIEW ThreeTablesView 
AS SELECT dbo.TableA.FieldA, dbo.TableB.FieldB, dbo.TableC.FieldC
FROM dbo.TableA
INNER JOIN dbo.TableB ON dbo.TableA.PrimaryKey = dbo.TableB.PrimaryKey
INNER JOIN dbo.TableC ON dbo.TableA.PrimaryKey = dbo.TableC.PrimaryKey
创建而不是触发器

CREATE TRIGGER ThreeTablesView_InsertTrigger
ON [dbo].[ThreeTablesView]
INSTEAD OF INSERT
AS
BEGIN
INSERT INTO TableA (FieldA) SELECT i.FieldA FROM INSERTED i;
INSERT INTO TableB (FieldB) SELECT i.FieldB FROM INSERTED i;
INSERT INTO TableC (FieldC) SELECT i.FieldC FROM INSERTED i;
END
使用单个Insert语句将数据插入三个表中

insert into ThreeTablesView (FieldA, FieldB, FieldC) values (N'aa', N'bb', N'cc');

您可以创建视图合并来自这三个表的数据 然后使用而不是trigger使用一条insert语句将数据插入到这些表中

创建三个表

CREATE TABLE TableA(
[PrimaryKey] [int] IDENTITY(1,1) NOT NULL,
[FieldA] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_TableA] PRIMARY KEY CLUSTERED ([PrimaryKey] ASC)
) ON [PRIMARY]

CREATE TABLE TableB(
[PrimaryKey] [int] IDENTITY(1,1) NOT NULL,
[FieldB] [nvarchar](50) NULL,
CONSTRAINT [PK_TableB] PRIMARY KEY CLUSTERED ([PrimaryKey] ASC)
) ON [PRIMARY]

CREATE TABLE TableC(
[PrimaryKey] [int] IDENTITY(1,1) NOT NULL,
[FieldC] [nchar](10) NOT NULL,
CONSTRAINT [PK_TableC] PRIMARY KEY CLUSTERED ([PrimaryKey] ASC)
) ON [PRIMARY]
创建视图

CREATE VIEW ThreeTablesView 
AS SELECT dbo.TableA.FieldA, dbo.TableB.FieldB, dbo.TableC.FieldC
FROM dbo.TableA
INNER JOIN dbo.TableB ON dbo.TableA.PrimaryKey = dbo.TableB.PrimaryKey
INNER JOIN dbo.TableC ON dbo.TableA.PrimaryKey = dbo.TableC.PrimaryKey
创建而不是触发器

CREATE TRIGGER ThreeTablesView_InsertTrigger
ON [dbo].[ThreeTablesView]
INSTEAD OF INSERT
AS
BEGIN
INSERT INTO TableA (FieldA) SELECT i.FieldA FROM INSERTED i;
INSERT INTO TableB (FieldB) SELECT i.FieldB FROM INSERTED i;
INSERT INTO TableC (FieldC) SELECT i.FieldC FROM INSERTED i;
END
使用单个Insert语句将数据插入三个表中

insert into ThreeTablesView (FieldA, FieldB, FieldC) values (N'aa', N'bb', N'cc');

您可以创建视图合并来自这三个表的数据 然后使用而不是trigger使用一条insert语句将数据插入到这些表中

创建三个表

CREATE TABLE TableA(
[PrimaryKey] [int] IDENTITY(1,1) NOT NULL,
[FieldA] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_TableA] PRIMARY KEY CLUSTERED ([PrimaryKey] ASC)
) ON [PRIMARY]

CREATE TABLE TableB(
[PrimaryKey] [int] IDENTITY(1,1) NOT NULL,
[FieldB] [nvarchar](50) NULL,
CONSTRAINT [PK_TableB] PRIMARY KEY CLUSTERED ([PrimaryKey] ASC)
) ON [PRIMARY]

CREATE TABLE TableC(
[PrimaryKey] [int] IDENTITY(1,1) NOT NULL,
[FieldC] [nchar](10) NOT NULL,
CONSTRAINT [PK_TableC] PRIMARY KEY CLUSTERED ([PrimaryKey] ASC)
) ON [PRIMARY]
创建视图

CREATE VIEW ThreeTablesView 
AS SELECT dbo.TableA.FieldA, dbo.TableB.FieldB, dbo.TableC.FieldC
FROM dbo.TableA
INNER JOIN dbo.TableB ON dbo.TableA.PrimaryKey = dbo.TableB.PrimaryKey
INNER JOIN dbo.TableC ON dbo.TableA.PrimaryKey = dbo.TableC.PrimaryKey
创建而不是触发器

CREATE TRIGGER ThreeTablesView_InsertTrigger
ON [dbo].[ThreeTablesView]
INSTEAD OF INSERT
AS
BEGIN
INSERT INTO TableA (FieldA) SELECT i.FieldA FROM INSERTED i;
INSERT INTO TableB (FieldB) SELECT i.FieldB FROM INSERTED i;
INSERT INTO TableC (FieldC) SELECT i.FieldC FROM INSERTED i;
END
使用单个Insert语句将数据插入三个表中

insert into ThreeTablesView (FieldA, FieldB, FieldC) values (N'aa', N'bb', N'cc');

您可以创建视图合并来自这三个表的数据 然后使用而不是trigger使用一条insert语句将数据插入到这些表中

创建三个表

CREATE TABLE TableA(
[PrimaryKey] [int] IDENTITY(1,1) NOT NULL,
[FieldA] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_TableA] PRIMARY KEY CLUSTERED ([PrimaryKey] ASC)
) ON [PRIMARY]

CREATE TABLE TableB(
[PrimaryKey] [int] IDENTITY(1,1) NOT NULL,
[FieldB] [nvarchar](50) NULL,
CONSTRAINT [PK_TableB] PRIMARY KEY CLUSTERED ([PrimaryKey] ASC)
) ON [PRIMARY]

CREATE TABLE TableC(
[PrimaryKey] [int] IDENTITY(1,1) NOT NULL,
[FieldC] [nchar](10) NOT NULL,
CONSTRAINT [PK_TableC] PRIMARY KEY CLUSTERED ([PrimaryKey] ASC)
) ON [PRIMARY]
创建视图

CREATE VIEW ThreeTablesView 
AS SELECT dbo.TableA.FieldA, dbo.TableB.FieldB, dbo.TableC.FieldC
FROM dbo.TableA
INNER JOIN dbo.TableB ON dbo.TableA.PrimaryKey = dbo.TableB.PrimaryKey
INNER JOIN dbo.TableC ON dbo.TableA.PrimaryKey = dbo.TableC.PrimaryKey
创建而不是触发器

CREATE TRIGGER ThreeTablesView_InsertTrigger
ON [dbo].[ThreeTablesView]
INSTEAD OF INSERT
AS
BEGIN
INSERT INTO TableA (FieldA) SELECT i.FieldA FROM INSERTED i;
INSERT INTO TableB (FieldB) SELECT i.FieldB FROM INSERTED i;
INSERT INTO TableC (FieldC) SELECT i.FieldC FROM INSERTED i;
END
使用单个Insert语句将数据插入三个表中

insert into ThreeTablesView (FieldA, FieldB, FieldC) values (N'aa', N'bb', N'cc');

请尝试在您的帖子中发布这些图片。通过这种方式,你的文章的读者可以更容易地帮助你。我认为他没有足够的代表性,你需要为每个表插入一个查询。我的建议是用这些查询编写一个存储过程,并从.net应用程序调用它。顺便说一下,当您只使用一个数据库引擎时,为3个不同的数据库引擎添加标记会使您的问题变得模棱两可。如果你想成为一名程序员,你应该意识到这有多糟糕。是的,也许你想使用生成的唯一ID。你可以让你的数据库在每次插入值时生成一个新的ID。另外,您不想让用户链接表,因此费用不应该有m_id输入。请尝试在您的帖子中发布这些图像。通过这种方式,你的文章的读者可以更容易地帮助你。我认为他没有足够的代表性,你需要为每个表插入一个查询。我的建议是用这些查询编写一个存储过程,并从.net应用程序调用它。顺便说一下,当您只使用一个数据库引擎时,为3个不同的数据库引擎添加标记会使您的问题变得模棱两可。如果你想成为一名程序员,你应该意识到这有多糟糕。是的,也许你想使用生成的唯一ID。你可以让你的数据库在每次插入值时生成一个新的ID。另外,您不想让用户链接表,因此费用不应该有m_id输入。请尝试在您的帖子中发布这些图像。通过这种方式,你的文章的读者可以更容易地帮助你。我认为他没有足够的代表性,你需要为每个表插入一个查询。我的建议是用这些查询编写一个存储过程,并从.net应用程序调用它。顺便说一句,当您只使用一个数据库引擎时,为3个不同的数据库引擎添加标记会使您的问题更加复杂