2012-06-06 27 views
0

一個小問題關於C#的存儲過程...和SQL數據庫一般: 當你從C#傳遞變量的值存儲過程,有時你必須SQL記錄條目,不同的測試用例

INSERT INTO tablename (column1 name, column2 name, column3 name, columnN name) 
VALUES (@the actual values1, @values2, @valueN); 

其他時候你沒有列名,但只輸入了值... 如果我輸入這樣的內容會發生什麼(假設表中有3列稱爲「bob」,「ash」和「will」) :

INSERT INTO tablename (bob, will) VALUES ("hi","hello"); 
OR 
INSERT INTO tablename (bob, will) VALUES ("hi","hello","okay"); 
OR 
INSERT INTO tablename (bob, will) VALUES ("hello"); 

它將如何影響條目?

+0

請格式化您的問題,使其可讀。 –

+0

你的問題沒有意義。你定義的存儲過程的方式決定了你應該如何編程來自C#的調用。也許你應該發佈你的存儲過程來看看它是如何被調用的。 – CAbbott

+0

如果你不知道你的數據會進入哪些領域,那麼你做的事情是非常錯誤的。你怎麼知道'hello'的值是否屬於Bob,will或ash?它有所作爲。 – HLGEM

回答

0

第一個查詢正確插入該記錄(如果沒有主鍵違規)。
第二個查詢失敗,因爲您有三個值和兩個字段。
第三個查詢失敗,因爲您有兩個字段的值。

+0

第三個查詢也不會解析。 – Quassnoi

+0

@Quassnoi:我不能嘗試,但是,如果你告訴我我編輯我的答案。謝謝:) – Marco

+0

+解釋爲什麼聲明不起作用的答案。 – Bulvak

1

第一個查詢會將默認值插入ash,其他兩個不會解析。

+0

用於糾正Marco的+1 – Bulvak

1

由於Quassnoi和Marco指出了sql方面的錯誤關注。

在C#中調試時,您將收到以下錯誤。

INSERT語句中的列數少於VALUES子句中指定的值 。 VALUES子句中的值數量必須爲 與INSERT語句中指定的列數相匹配。

+0

+1用於解釋原因(錯誤)。 – Bulvak

0

在SQL第一查詢被執行成功,而第二個查詢日子會把收到以下錯誤: 有比VALUES子句中指定的值的INSERT語句較少的列。 VALUES子句中的值數量必須與INSERT語句中指定的列數相匹配。 和第三個查詢也會產生以下錯誤: INSERT語句中的列數多於VALUES子句中指定的值。 VALUES子句中的值數量必須與INSERT語句中指定的列數相匹配。

+0

請格式化您的答案,以便閱讀。 – Bulvak

相關問題