.NET Forum / Languages / VB.NET / October 2004
Error 07002 - SQLBindParameter Problem Shorter Example
|
|
Thread rating:  |
Mikey G - 15 Oct 2004 15:23 GMT Hi, Here is a shorter code example since the last message I posted got truncated. So the problem is I created a simple VB.NET 2003 application through Visual Studio that connects to a MySQL database and loads a table into a Dataset, and then displays that table information in a DataGrid on a form for editing. The table fill works fine, the delete function works fine, but when I try to update a row, the application fails with the following error message:
An unhandled exception of type 'System.Data.Odbc.OdbcException' occurred in system.data.dll
Additional information: System error.
'Data Access VB App.exe': Loaded 'c:\windows\assembly\gac\microsoft.visualbasic\7.0.5000.0__b03f5f7f11d50 a3a\microsoft.visualbasic.dll', No symbols loaded.
Unhandled Exception: System.Data.Odbc.OdbcException: ERROR [07002] [MySQL][ODBC 3.51 Driver][mysqld-4.0.21-debug]SQLBindParameter not used for all parameters at System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping) at System.Data.Common.DbDataAdapter.Update(DataSet dataSet, String srcTable) at System.Data.Common.DbDataAdapter.Update(DataSet dataSet) at Data_Access_VB_App.Form1.btnUpdate_Click(Object sender, EventArgs e) in C:\Documents and Settings\System Admin\My Documents\Visual Studio Projects\Data Access VB App\Form1.vb:line 225
The majority of the code was generated by Visual Studio and based on the error message it would seem that I have to add SQLBindParameter statements, but I am not sure the syntax that I should be using. I am new to VB.NET (coming from Java/J2EE) and haven't been able to come up with a workable solution after pouring over the MSDN manuals. Here is some of the generated code: ' 'OdbcDataAdapter1 ' Me.OdbcDataAdapter1.DeleteCommand = Me.OdbcDeleteCommand1 Me.OdbcDataAdapter1.InsertCommand = Me.OdbcInsertCommand1 Me.OdbcDataAdapter1.SelectCommand = Me.OdbcSelectCommand1 Me.OdbcDataAdapter1.TableMappings.AddRange(New System.Data.Common.DataTableMapping() {New System.Data.Common.DataTableMapping("Table", "epctag", New System.Data.Common.DataColumnMapping() {New System.Data.Common.DataColumnMapping("ID", "ID"), New System.Data.Common.DataColumnMapping("OBJECT_EPC", "OBJECT_EPC"), New System.Data.Common.DataColumnMapping("READER_EPC", "READER_EPC"), New System.Data.Common.DataColumnMapping("DATE_TIME", "DATE_TIME"), New System.Data.Common.DataColumnMapping("PAYLOAD", "PAYLOAD"), New System.Data.Common.DataColumnMapping("GTIN_DOMAIN", "GTIN_DOMAIN"), New System.Data.Common.DataColumnMapping("GTIN_CLASS", "GTIN_CLASS")})}) Me.OdbcDataAdapter1.UpdateCommand = Me.OdbcUpdateCommand1 ' 'OdbcConnection1 ' Me.OdbcConnection1.ConnectionString = "STMT=;OPTION=3;DSN=EPCThingsNET;UID=root;SOCKET=;DESC=MySQL ODBC 3.51 Driver DSN;" & _ "DATABASE=thingsnet;SERVER=localhost;PORT=3306" ' 'DsTags1 ' Me.DsTags1.DataSetName = "dsTags" Me.DsTags1.Locale = New System.Globalization.CultureInfo("en-US") ' 'DataGrid1 ' Me.DataGrid1.DataMember = "epctag" Me.DataGrid1.DataSource = Me.DsTags1 Me.DataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText Me.DataGrid1.Location = New System.Drawing.Point(8, 128) Me.DataGrid1.Name = "DataGrid1" Me.DataGrid1.Size = New System.Drawing.Size(584, 264) Me.DataGrid1.TabIndex = 0 ' 'OdbcSelectCommand1 ' Me.OdbcSelectCommand1.CommandText = "SELECT ID, OBJECT_EPC, READER_EPC, DATE_TIME, PAYLOAD, GTIN_DOMAIN, GTIN_CLASS FR" & _ "OM epctag" Me.OdbcSelectCommand1.Connection = Me.OdbcConnection1 ' 'OdbcDeleteCommand1 ' Me.OdbcDeleteCommand1.CommandText = "DELETE FROM epctag WHERE (ID = ?)" Me.OdbcDeleteCommand1.Connection = Me.OdbcConnection1 Me.OdbcDeleteCommand1.Parameters.Add(New System.Data.Odbc.OdbcParameter("ID", System.Data.Odbc.OdbcType.BigInt, 0, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "ID", System.Data.DataRowVersion.Original, Nothing)) ' 'OdbcUpdateCommand1 ' Me.OdbcUpdateCommand1.CommandText = "UPDATE ecptag SET ID = ?, OBJECT_EPC = ?, READER_EPC = ?, DATE_TIME = ?, PAYLOAD " & _ "= ?, GTIN_DOMAIN = ?, GTIN_CLASS = ? WHERE (ID = ?)" Me.OdbcUpdateCommand1.Connection = Me.OdbcConnection1 Me.OdbcUpdateCommand1.Parameters.Add(New System.Data.Odbc.OdbcParameter("ID", System.Data.Odbc.OdbcType.BigInt, 0, "ID")) Me.OdbcUpdateCommand1.Parameters.Add(New System.Data.Odbc.OdbcParameter("OBJECT_EPC", System.Data.Odbc.OdbcType.VarChar, 255, "OBJECT_EPC")) Me.OdbcUpdateCommand1.Parameters.Add(New System.Data.Odbc.OdbcParameter("READER_EPC", System.Data.Odbc.OdbcType.VarChar, 255, "READER_EPC")) Me.OdbcUpdateCommand1.Parameters.Add(New System.Data.Odbc.OdbcParameter("DATE_TIME", System.Data.Odbc.OdbcType.VarChar, 255, "DATE_TIME")) Me.OdbcUpdateCommand1.Parameters.Add(New System.Data.Odbc.OdbcParameter("PAYLOAD", System.Data.Odbc.OdbcType.VarChar, 255, "PAYLOAD")) Me.OdbcUpdateCommand1.Parameters.Add(New System.Data.Odbc.OdbcParameter("GTIN_DOMAIN", System.Data.Odbc.OdbcType.VarChar, 255, "GTIN_DOMAIN")) Me.OdbcUpdateCommand1.Parameters.Add(New System.Data.Odbc.OdbcParameter("GTIN_CLASS", System.Data.Odbc.OdbcType.VarChar, 255, "GTIN_CLASS"))
That's the long and short of it! Appreciate any help.
Cor Ligthert - 15 Oct 2004 15:56 GMT Mikey,
I am not sure if I asked it before too you. You are sure you canot use OleDb?
http://www.connectionstrings.com/
Cor
"Mikey G" <nospam@devdex.com> .
> Hi, Here is a shorter code example since the last message I posted got > truncated. So the problem is I created a simple VB.NET 2003 application [quoted text clipped - 120 lines] > > That's the long and short of it! Appreciate any help. Mikey G - 15 Oct 2004 19:23 GMT Hi Cor,
I had to install the MySQL ODBC driver to be able to access the MySQL database, so that was why I opted to use ODBC. Thoughts?
Mikey
Cor Ligthert - 16 Oct 2004 07:27 GMT Mikey,
I wrote this because ODBC gives sometimes trouble because there is not all supported as with OleDb, SQLclient and OracleClient (The last two you cannot use)
I have asked this to you it in a asking way because my expirience with MySQL is nothing, however I would try in your situation OleDb. And when you have trouble is, because it is MySql, certainly a better place to ask for help for this the newsgroup
Adonet <news://msnews.microsoft.com/microsoft.public.dotnet.framework.adonet>
Web interface: <http://communities2.microsoft.com/communities/newsgroups/en-us/?dg=microsoft.pub lic.dotnet.framework.adonet>
I hope this helps somehow?
Cor
> Hi Cor, > > I had to install the MySQL ODBC driver to be able to access the MySQL > database, so that was why I opted to use ODBC. Thoughts? > > Mikey Mikey G - 16 Oct 2004 14:11 GMT Hi Cor,
I will try the OLE DB approach and see if that makes a difference. I will also post the question to the other newsgroups. Thanks for the suggestions!
Mikey
Mikey G - 23 Oct 2004 14:12 GMT All,
A couple of things; Visual Studio does not come with an OleDB data provider for MySQL, so I still ended up using the MySQL ODBC driver. Here is the code that I finally got to work:
' 'OdbcInsertCommand1 ' Me.OdbcInsertCommand1.CommandText = "INSERT INTO epctag(ID, OBJECT_EPC, READER_EPC, DATE_TIME, PAYLOAD, GTIN_DOMAIN, G" & _ "TIN_CLASS) VALUES (?, ?, ?, ?, ?, ?, ?)" Me.OdbcInsertCommand1.Connection = Me.OdbcConnection1 Me.OdbcInsertCommand1.Parameters.Add(New System.Data.Odbc.OdbcParameter("ID", System.Data.Odbc.OdbcType.BigInt, 0, "ID")) Me.OdbcInsertCommand1.Parameters.Add(New System.Data.Odbc.OdbcParameter("OBJECT_EPC", System.Data.Odbc.OdbcType.VarChar, 255, "OBJECT_EPC")) Me.OdbcInsertCommand1.Parameters.Add(New System.Data.Odbc.OdbcParameter("READER_EPC", System.Data.Odbc.OdbcType.VarChar, 255, "READER_EPC")) Me.OdbcInsertCommand1.Parameters.Add(New System.Data.Odbc.OdbcParameter("DATE_TIME", System.Data.Odbc.OdbcType.VarChar, 255, "DATE_TIME")) Me.OdbcInsertCommand1.Parameters.Add(New System.Data.Odbc.OdbcParameter("PAYLOAD", System.Data.Odbc.OdbcType.VarChar, 255, "PAYLOAD")) Me.OdbcInsertCommand1.Parameters.Add(New System.Data.Odbc.OdbcParameter("GTIN_DOMAIN", System.Data.Odbc.OdbcType.VarChar, 255, "GTIN_DOMAIN")) Me.OdbcInsertCommand1.Parameters.Add(New System.Data.Odbc.OdbcParameter("GTIN_CLASS", System.Data.Odbc.OdbcType.VarChar, 255, "GTIN_CLASS"))
' 'OdbcDeleteCommand1 ' Me.OdbcDeleteCommand1.CommandText = "DELETE FROM epctag WHERE (ID = ?)" Me.OdbcDeleteCommand1.Connection = Me.OdbcConnection1 Me.OdbcDeleteCommand1.Parameters.Add(New System.Data.Odbc.OdbcParameter("ID", System.Data.Odbc.OdbcType.BigInt, 0, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "ID", System.Data.DataRowVersion.Original, Nothing)) ' 'OdbcUpdateCommand1 ' Me.OdbcUpdateCommand1.CommandText = "UPDATE epctag SET ID = ?, OBJECT_EPC = ?, READER_EPC = ?, DATE_TIME = ?, PAYLOAD " & _ "= ?, GTIN_DOMAIN = ?, GTIN_CLASS = ? WHERE (ID = ?)" Me.OdbcUpdateCommand1.Connection = Me.OdbcConnection1 Me.OdbcUpdateCommand1.Parameters.Add(New System.Data.Odbc.OdbcParameter("ID", System.Data.Odbc.OdbcType.BigInt, 0, "ID")) Me.OdbcUpdateCommand1.Parameters.Add(New System.Data.Odbc.OdbcParameter("OBJECT_EPC", System.Data.Odbc.OdbcType.VarChar, 255, "OBJECT_EPC")) Me.OdbcUpdateCommand1.Parameters.Add(New System.Data.Odbc.OdbcParameter("READER_EPC", System.Data.Odbc.OdbcType.VarChar, 255, "READER_EPC")) Me.OdbcUpdateCommand1.Parameters.Add(New System.Data.Odbc.OdbcParameter("DATE_TIME", System.Data.Odbc.OdbcType.VarChar, 255, "DATE_TIME")) Me.OdbcUpdateCommand1.Parameters.Add(New System.Data.Odbc.OdbcParameter("PAYLOAD", System.Data.Odbc.OdbcType.VarChar, 255, "PAYLOAD")) Me.OdbcUpdateCommand1.Parameters.Add(New System.Data.Odbc.OdbcParameter("GTIN_DOMAIN", System.Data.Odbc.OdbcType.VarChar, 255, "GTIN_DOMAIN")) Me.OdbcUpdateCommand1.Parameters.Add(New System.Data.Odbc.OdbcParameter("GTIN_CLASS", System.Data.Odbc.OdbcType.VarChar, 255, "GTIN_CLASS")) Me.OdbcUpdateCommand1.Parameters.Add(New System.Data.Odbc.OdbcParameter("Original_ID", System.Data.Odbc.OdbcType.BigInt, 0, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "ID", System.Data.DataRowVersion.Original, Nothing))
Hope this helps,
Mikey
chanmmn - 23 Oct 2004 17:32 GMT Have you tried to use the wizard to retrieve the data first and see what is going on?
chanmm
> All, > [quoted text clipped - 78 lines] > > Mikey
Free MagazinesGet these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...
|
|
|