2016-04-23 89 views
-3
string cmdStr = "INSERT INTO Names(ID,FirstName) VALUES(@ID,@FirstName)"; 

嘗試[] does not help can any any help please please?我在INSERT INTO語句中得到語法錯誤

訪問2007

+0

你是什麼意思的「嘗試[]」?你究竟試過了什麼,發生了什麼? –

+0

[姓名]仍嘗試syntex – Rishta

+1

其非自動編號其主要但不自動 – Rishta

回答

0

假設你用正確的方式來處理您的參數,查詢應該正常工作。

var conn = new SqlConnection(connStr); 
conn.Open(); 
var cmd = new SqlCommand(cmdStr, conn); 
cmd.Parameters.AddWithValue("@ID", id); 
cmd.Parameters.AddWithValue("@FirstName", firstName); 

一個問題可能是如果ID列標記爲標識列。在這種情況下,你必須暫時啓用標識插入:

var cmdStr = @"SET IDENTITY_INSERT Names ON; " + 
      @"INSERT INTO Names(ID,FirstName) VALUES(@ID,@FirstName); " + 
      @"SET IDENTITY_INSERT Names OFF;" 

或者,如上所述,如果你有一列,不能爲空,那麼你當然必須包括它的值。

在任何情況下,拋出的SqlException或OleDbException都應該告訴你到底發生了什麼問題。

+0

var cmdStr = @「SET IDENTITY_INSERT Names ON;」+ @「INSERT INTO Names(ID,名字)VALUES(@ ID,@ FirstName);「+ @」SET IDENTITY_INSERT Names OFF;「其ole db setidentife不適合我 – Rishta

+0

,它可以爲空。 – Rishta

+0

請使用完整的句子。很難理解你打算說什麼。以上是否意味着您使用的是OleDB,並且該表中的所有列都可以爲空? OleDb無法查看某個表是否包含標識列,並且如果嘗試在沒有標識列的表上設置IDENTITY_INSERT,SQL Server將引發錯誤。檢查異常以確定它是哪一個。 –

1

這就是問題所在:字符串cmdStr = 「INSERT INTO學生(ID,名字,市)VALUES(@ ID,@名字,@市)」 工作正常

這就是問題所在,您的表格有3列,但可能沒有City的默認值,如果您不告訴它應該輸入City它不知道並且會失敗。

您必須始終指定城市或編輯表格定義以包含默認值City

0

串cmdStr = 「INSERT INTO名稱(ID,名字)VALUES(1001, '思雅')」 工作

  • 確保你實際上是傳遞一個值,這兩個變量(將你的代碼中的斷點,一步一步的調試,顯示你將要插入的值,等等)
  • 確保你包含''包裝你的char鏈。例如:思雅

它可以幫助您分析什麼是你在你的代碼做你運行你的另一插入語句,你插入之前的學生。

+0

好的thnx幫助我理解也許問題 – Rishta

相關問題