2012-07-25 111 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