2012-07-25 109 views
0

我正在使用SQL Server 2008和C#ADO.NET来完成此操作。如何通过ADO.NET

我想用存储过程把这些数据插入到表SAVEDATA

谢谢

Srosh

+0

我怎么得到一个消极的,甚至没有问一个问题是否不够清楚? – Srosh 2012-07-25 13:42:16

回答

1

好了,你只要写一个INSERT声明,你选择从数据正在通过的表格:

CREATE PROCEDURE [dbo].[spSave] (@theDATA As [dbo].[TVP] Readonly) 
AS 
BEGIN  
    INSERT INTO dbo.SaveResponse(ID, myQuestion, PersonWhoResponses, 
           Response, [User], [DateTime]) 

     SELECT 
      ID, myQuestion, PersonWhoResponses, 
      Response, [User], [DateTime] 
     FROM 
      @theDATA 
END 
+1

BTW:使用'User'和'DateTime'作为列名是**非常糟糕的设计** - 那些是保留字 - **不要将它们自己用作列或表名!**。 – 2012-07-25 13:51:51

+0

Marc,我现在将更改名称,感谢您的建议,并且您会如何建议我可以在我的ADO.NET端C#中编写此代码?应该如何创建具有不同数据长度的表格?有任何想法吗?谢谢 – Srosh 2012-07-25 14:16:00

+0

@SroshSharar:在ADO.NET方面,您需要创建一个'DataTable',其中包含正确数量的'DataColumns'(与您的表类型的定义相匹配),然后您需要填写该'DataTable'数据并将其传递给存储过程 – 2012-07-25 15:24:49

0
INSERT INTO @theData ( 
    SELECT [ID], [myQuestion], [PersonWhoResponses], [Response] , [User], [DateTime] 
    FROM SAVERESPONSE 
    WHERE ... 
) 
+0

'@ theDATA'是存储过程中的一个** input **参数 - 它被标记为'READONLY' - 您不能**将数据行添加到该变量中!你需要**从变量**中读取它们。 – 2012-07-25 13:52:37

+0

我同意MARK。 – Srosh 2012-07-25 14:17:53

+0

我也同意,对不起我的错误 – 2012-07-25 17:36:46