2016-10-25 66 views
2

我試圖創建一個軟件,允許客戶將一件設備生成的數據上傳到他們自己的數據庫中。用於Access和SQL Server的C#TableAdapter

爲此,我在Visual Studio 2015中基於帶有所需表格的* .mdb文件設計了一個數據集。表適配器嚮導在爲強類型數據集設計表適配器和查詢方面做得非常出色。此表中的所有類型都是除日期和時間字段(日期/時間)之外的文本。生成的聲明如下:

INSERT INTO`tblVoltechRunID`(`RunID`,`Date`,`Time`,`ATUnitID`,`PartID`,`FixtureID`,`OperatorID`,`BatchID` `TransformerSerialNo`,`OverallResult`)VALUES(?,?,?,?,?,?,?,?,?,?)

然而,切換到SQL數據庫時,引起了重音符插入語句由於語法錯誤而失敗。手動刪除嚴重重音會導致查詢成功。

是否有可能使用Visual Studio的數據集設計器來創建跨平臺兼容的TableAdapter?

回答

1

是否可以使用Visual Studio的數據集設計製作跨平臺兼容的TableAdapter?

你也許能夠採取的事實,即...

  1. 上訪問SQL和T-SQL的支持方括號作爲分隔符的表和列名,並
  2. 系統。 Data.OleDb 允許命名的參數,但它忽略名稱和治療參數,嚴格位置

...和黑客所產生的CommandText爲將InsertCommand到

INSERT INTO [tblVoltechRunID] 
([RunID], [Date], [Time], [ATUnitID], [PartID], [FixtureID], [OperatorID], [BatchID], [TransformerSerialNo], [OverallResult]) 
VALUES 
(@RunID, @Date, @Time, @ATUnitID, @PartID, @FixtureID, @OperatorID, @BatchID, @TransformerSerialNo, @OverallResult) 

我只是測試類似的東西用一個TableAdapter的表在Access數據庫和它的工作對我來說,雖然它打破的設計器視圖TableAdapter(並且,說實話,這一切似乎都有點過分,因爲我喜歡)。

+0

感謝您的好評。我同意黑客生成的命令文本是狡猾的,但是如果使用SQL數據庫,那麼命令文本就會像這樣生成,因此可能不需要黑客入侵。 –

0

?是您的SqlCommand.Parameters的無效名稱參數。您應該使用名稱參數。

SqlCommand cmd = new SqlCommand(); 
cmd.Connection = conn; //your SqlConnection object 

cmd.CommandText = @" 
INSERT INTO tblVoltechRunID 
    (RunID, Date, Time, ATUnitID, PartID, FixtureID, OperatorID, BatchID, TransformerSerialNo, OverallResult) 
VALUES 
    (@RunID, @Date, @Time, @AtUnitID, @PartID, @FixtureID, @OperatorID, @BatchID, @TransformerSerialNo, @)"; 

cmd.Parameters.AddWithValue("RunID", runID); //runID value which you want to put in RunID variable 
//define other parameters in same way 
+0

有關參數名稱的好處,但是當SqlCommand#ExecuteNonQuery()遇到列名後面的反引號時仍然會引發異常。 –

+0

@GordThompson啊我記得你可以在這裏逃離這樣的領域,看起來我錯了。 – mybirthname

相關問題