這不是asp,只是一個普通的本地數據庫程序,我試圖做。MS-Access和VB.NET插入工作的一半時間
我有這個編輯子:
Protected Sub update()
Dim sqlString As String
Dim pair_0f_attribute As ArrayList = buildSqlUpdate()
sqlString = "UPDATE " & getSharedTableName() & " SET "
sqlString = sqlString & String.Join(", ", pair_0f_attribute.ToArray)
sqlString = sqlString & " WHERE UID = " & id
cmd = New OleDbCommand(sqlString, conn)
cmd.CommandType = CommandType.Text
ExecuteNonQuery(cmd)
End Sub
這給了我錯誤的INSERT命令。我已經分解了這個巨大的插入(我得到了70+列,我不想手動爲我的數據庫上的所有2000+行做手動),一次只獲得1個值,並檢查它失敗的位置。
Public Sub editrow(ByVal ID As Integer, ByVal ColumnName As String, ByVal value As Object)
Dim SqlString As String = "Update " & getSharedTableName() & " Set " & ColumnName & " = ? Where UID = " & ID
Dim cmd As New OleDbCommand(SqlString, conn)
cmd.CommandType = CommandType.Text
cmd.Parameters.AddWithValue(ColumnName, value)
ExecuteNonQuery(cmd)
End Sub
這項工作的用戶名,這是一個字符串,它是一個整數水平,XP是一個整數等等......一對夫婦插件的,其良好的,不是突然8日我得到一個錯誤在插入語句上。
我的ColumnName是「大小」,我試圖將其更改爲「MSIZE」我仍然得到一個錯誤,並且該值是「中等」。
爲什麼會在列名「用戶名」,它使用一個字符串wokrs過這一個失敗?
我已經檢查我的數據庫,以確保和字段大小(現MSIZE)設置爲文本,沒有默認值,它可以爲空,並有255最大lenght。世界上沒有對數據庫的任何領域使用的格式或驗證或正則表達式...
任何人有我應該如何着手修復這個任何提示?
**編輯
繼承人到buildSqlUpdate()我用:
Private Function buildSqlUpdate() As ArrayList
Dim pair_arraryList As New ArrayList
For Each element As KeyValuePair(Of String, Object) In attributes
pair_arraryList.Add("[" & element.Key & "] = '" & element.Value & "'")
Next
Return pair_arraryList
End Function
你問前;)屬性存儲在與他們的價值dictionnary在運行時填寫的數據庫列名當我構建一個對象的新實例時,它運行良好,並且在我插入之前的字符串(即使太長)似乎很好地構建時,我檢查它。
** * ** 編輯 ** * **
我添加了支架作爲Remou的建議,現在我沒有得到同樣的錯誤...如果我使用的第一個刀片(完全構建一個)我得到這個錯誤:
(語法錯誤(缺少運算符)下面的表達式:....一些字符串值....
如果我使用editrow我沒有任何錯誤(但它的長...花了約2分鐘,只上升到125項出2K)
你可以發佈'buildSqlUpdate()'的代碼嗎? – kaveman 2012-07-18 04:46:32
如果你想,它不是真的需要在這裏,因爲我也得到了editRow子的錯誤... – 2012-07-18 04:48:32