Hello,

 

I've got a strange behavior with the provider. The trailing space of a
string are trimmed.

 

Let me give you an sample :

 

CREATE TABLE "Item" (

  OID                    INTEGER NOT NULL,

  "Code"                 VARCHAR(100) CHARACTER SET UNICODE_FSS,

  "OptimisticLockField"  INTEGER,

  "GCRecord"             INTEGER,

  /* Keys */

  CONSTRAINT "PK_Item"

    PRIMARY KEY (OID)

);

 

 

 

 

private static string InsertWithFirebirdProvider()

{

      // insert a record with a trailing space

      using (FbConnection connection = CreateAndOpenConnection())

      using (FbCommand command = new FbCommand(GetQueryInsert(),
connection))

            command.ExecuteNonQuery();

 

      // read the inserted record

      // the trailing space is trimmed !!!

      using (FbConnection connection = CreateAndOpenConnection())

      using (FbCommand command = new FbCommand(GetQueryRead(), connection))

      {

            object firebirdCode = command.ExecuteScalar();

            if (firebirdCode != null)

                  return (string)firebirdCode;

            else

                  return String.Empty;

      }

}

 

private static string GetQueryInsert()

{

      StringBuilder query = new StringBuilder();

 

      query.AppendLine("insert into \"Item\" (\"OID\", \"Code\",
\"OptimisticLockField\", \"GCRecord\")");

      query.AppendLine("values (GEN_ID(\"sq_Item\", 1), 'AAA ', 0, null)");

 

      return query.ToString();

}

 

private static string GetQueryRead()

{

      StringBuilder query = new StringBuilder();

 

      query.AppendLine("select \"Code\"");

      query.AppendLine("from \"Item\"");

      query.AppendLine("where \"OID\" = (select max(\"OID\") from
\"Item\")");

 

      return query.ToString();

}

 

private void button1_Click(object sender, RoutedEventArgs e)

{

      string firebirdCode = InsertWithFirebirdProvider();

 

      StringBuilder message = new StringBuilder();

      if (firebirdCode == "AAA ")

            message.AppendLine("The code is correct");

      else if (firebirdCode == "AAA")

            message.AppendLine("The written code was <AAA >. It's now <AAA>.
The trailing space is missing !");

      else

            message.AppendFormat("The written code was <AAA >. It's now
<{0}> !{1}", firebirdCode, Environment.NewLine);

 

      MessageBox.Show(message.ToString());

}

 

 

As you can see, I insert a record with a value containing a space as the
last character. I can see in the database that it was inserted correctly
with the trailing space.

The ExecuteScalar() method returns the Code field without the trailing
space. Did I do something wrong ?

 

TIA

 

Julien

 

Julien Ferraro - WilLow

[EMAIL PROTECTED] - 0692 28 85 43 - Fax : 0262 24 98 85

 

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Firebird-net-provider mailing list
Firebird-net-provider@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/firebird-net-provider

Reply via email to