[Mono-dev] URGENT: Odbc-Exception-Error

Daniel Morgan danielmorgan at verizon.net
Wed Aug 17 08:12:40 EDT 2005


Read up on MSDN documentation on System.Data.Odbc.OdbcCommand property 
CommandText

The Odbc provider uses question mark placeholders. It does not support 
named parameters. You have to use a SQL statement like:

SELECT * FROM SOME_TABLE WHERE SOME_ID = ?

In your parameters, it is positional, not named.

I noticed in your code your are mis-matching. In your SQL statement, you 
have placeholders, but your creation of the parameters you are using 
named parameters with an @ symbol. You can not do this.

cStmnt = “UPDATE ComanySTD SET ” +

“ Name1 = ?, ”

“ Name2 = ? ”

“ WHERE PKey = ‘” + cPKey + "‘”


oCommand.Parameters.Add(new OdbcParameter).Value = 
Textbox_Name1.Text.Trim();

oCommand.Parameters.Add(new OdbcParameter).Value = 
Textbox_Name2.Text.Trim();

oCommand.ExecuteNonQuery();

If Odbc does not work for you, try Npgsql instead to connect to PostgreSQL.

Jan Waiz wrote:

> HI All,
>
> view Days ago i postet Porblems with ODBC and Postgre.
>
> One Answer was testet without solving the Problem so I send it to 
> bugzilla – without any Answer up to know.
>
> Now I am running in Timeproblems for the Project because I can’t 
> finish important Parts of the Application and the Deadline will come! 
> So I am coming in Trouble if I did not found a Solution. Be so kind 
> and let me know:
>
> How did YOU work via ODBC with a SQL-Database – meaning: How did you 
> build Insert- or Updatestatements? And how did you solve the Problem 
> with escaping Signs like <’> or german Signs like “äöü” ? Or did you 
> work with an other SQL-Database in the descriped way without any 
> Problems (*s*) ?
>
> In short I am doing it like this:
>
> cStmnt = “UPDATE ComanySTD SET” +
>
> “Name1 = ?,”
>
> “Name2 = ?”
>
> “WHERE PKey = ‘” + cPKey + ‘”
>
> oCommand.Parameters.Add( “@Name1”, Textbox_Name1.Text.Trim() )
>
> oCommand.Parameters.Add( “@Name2”, Textbox_Name2.Text.Trim() )
>
> oCommand.ExecuteNonQuery()
>
> wich is working fine running under Localhost but makes an Error 
> running under Mono:
>
>System.Data.Odbc.OdbcException: [unixODBC]Unrecognized C_parameter type in copy_statement_with_parameters
>
> 
>
> When changing to:
>
> cStmnt = “UPDATE ComanySTD SET” +
>
> “Name1 = “ + Textbox_Name1.Text.Trim() + ,”
>
> “Name2 = “ + Textbox_Name2.Text.Trim() + ,”
>
> “WHERE PKey = ‘” + cPKey + ‘”
>
> It works. But without excaping! And Signs like “äöü” will shown as 
> Crashed-Signs in a Textbox when showing a Record.
>
> I am playing around with different Ways using Parameter like:
>
> oCommand.Parameters.Add( “@Name1”, OdbcType.varchar, 36 ).Value = 
> Textbox_Name1.Text.Trim()
>
> but everytime the same Runtimeerror.
>
> So – now I am at the end of my Nerves and my Knowledge. Hope, there is 
> anyone outside there, who can tell me, how he is using ODBC-Parameter…
>
> Many Thanks for ANY Help !!!
>
> Jan Waiz
>
>------------------------------------------------------------------------
>
>_______________________________________________
>Mono-devel-list mailing list
>Mono-devel-list at lists.ximian.com
>http://lists.ximian.com/mailman/listinfo/mono-devel-list
>  
>




More information about the Mono-devel-list mailing list