Jirí Cincura a écrit :
update of the netprovider 8.5 client.
Several varchar (x) character set bytes are declared there which crashes on an expected byte [] even though I have been sending it strings for several months :-)

Do you have an example?

yes, copy/paste from my source


class method DBvapausfestit_register_forms.insert_or_update_vapausfestit_register_forms( ID: not nullable System.Guid; EVENT_ID: not nullable System.Guid; REGISTER_LANG: not nullable System.string; FIRSTNAME: nullable System.string; LASTNAME: nullable System.string; FULL_NAME: nullable System.string; EMAIL: not nullable System.string; KITS: nullable System.string; PHONE: not nullable System.string; COMMENT_COLLATION: nullable System.string; COMMENT_WORK: nullable System.string; INFORM_EMAIL: nullable System.string; FROM_IP: nullable System.string; REGISTER_DATETIME: nullable System.DateTime; EDIT_FROM_IP: nullable System.string; EDIT_DATETIME: nullable System.DateTime; PAY: nullable System.string; DELETED: nullable System.string; PASSWD: nullable System.string):System.Int32;
Begin
  var sqlCommand: StringBuilder := new StringBuilder;
sqlCommand.Append('UPDATE or INSERT INTO vapausfestit_register_forms ( ID, EVENT_ID, REGISTER_LANG, FIRSTNAME, LASTNAME, FULL_NAME, EMAIL, KITS, PHONE, COMMENT_COLLATION, COMMENT_WORK, INFORM_EMAIL, FROM_IP, REGISTER_DATETIME, EDIT_FROM_IP, EDIT_DATETIME, PAY, DELETED, PASSWD)'); sqlCommand.Append(' VALUES ( @ID, @EVENT_ID, @REGISTER_LANG, @FIRSTNAME, @LASTNAME, @FULL_NAME, @EMAIL, @KITS, @PHONE, @COMMENT_COLLATION, @COMMENT_WORK, @INFORM_EMAIL, @FROM_IP, @REGISTER_DATETIME, @EDIT_FROM_IP, @EDIT_DATETIME, @PAY, @DELETED, @PASSWD)');
  sqlCommand.Append('  matching (ID);');
  var arParams: array of FbParameter := new FbParameter[20];
  arParams[0] := new FbParameter('@ID',FbDbType.Guid);
  arParams[0].Direction := ParameterDirection.Input;
  arParams[0].Charset := FbCharset.OCTETS ;
  arParams[0].Value := ID;
  arParams[1] := new FbParameter('@EVENT_ID',FbDbType.Guid);
  arParams[1].Direction := ParameterDirection.Input;
  arParams[1].Charset := FbCharset.OCTETS ;
  arParams[1].Value := EVENT_ID;
  arParams[2] := new FbParameter('@REGISTER_LANG',CHAR(2));
  arParams[2].Direction := ParameterDirection.Input;
  arParams[2].Charset := FbCharset.ISO8859_1 ;
  arParams[2].Value := REGISTER_LANG;
  arParams[3] := new FbParameter('@FIRSTNAME',FbDbType.VarChar, 50);
  arParams[3].Direction := ParameterDirection.Input;
  arParams[3].Charset := FbCharset.ISO8859_1 ;
  if FIRSTNAME <> nil then
  arParams[3].Value := FIRSTNAME;
  arParams[4] := new FbParameter('@LASTNAME',FbDbType.VarChar, 100);
  arParams[4].Direction := ParameterDirection.Input;
  arParams[4].Charset := FbCharset.ISO8859_1 ;
  if LASTNAME <> nil then
  arParams[4].Value := LASTNAME;
  arParams[5] := new FbParameter('@FULL_NAME',FbDbType.VarChar, 200);
  arParams[5].Direction := ParameterDirection.Input;
  arParams[5].Charset := FbCharset.ISO8859_1 ;
  if FULL_NAME <> nil then
  arParams[5].Value := FULL_NAME;
  arParams[6] := new FbParameter('@EMAIL',FbDbType.VarChar, 100);
  arParams[6].Direction := ParameterDirection.Input;
  arParams[6].Charset := FbCharset.ISO8859_1 ;
  arParams[6].Value := EMAIL;
  arParams[7] := new FbParameter('@KITS',FbDbType.VarChar, 100);
  arParams[7].Direction := ParameterDirection.Input;
  arParams[7].Charset := FbCharset.ISO8859_1 ;
  if KITS <> nil then
  arParams[7].Value := KITS;
  arParams[8] := new FbParameter('@PHONE',FbDbType.VarChar, 50);
  arParams[8].Direction := ParameterDirection.Input;
  arParams[8].Charset := FbCharset.ISO8859_1 ;
  arParams[8].Value := PHONE;
arParams[9] := new FbParameter('@COMMENT_COLLATION',FbDbType.VarChar, 8000);
  arParams[9].Direction := ParameterDirection.Input;
  arParams[9].Charset := FbCharset.ISO8859_1 ;
  if COMMENT_COLLATION <> nil then
  arParams[9].Value := COMMENT_COLLATION;
arParams[10] := new FbParameter('@COMMENT_WORK',FbDbType.VarChar, 8000);
  arParams[10].Direction := ParameterDirection.Input;
  arParams[10].Charset := FbCharset.ISO8859_1 ;
  if COMMENT_WORK <> nil then
  arParams[10].Value := COMMENT_WORK;
  arParams[11] := new FbParameter('@INFORM_EMAIL',CHAR(1));
  arParams[11].Direction := ParameterDirection.Input;
  arParams[11].Charset := FbCharset.ISO8859_1 ;
  if INFORM_EMAIL <> nil then
  arParams[11].Value := INFORM_EMAIL;
  arParams[12] := new FbParameter('@FROM_IP',FbDbType.VarChar, 16);
  arParams[12].Direction := ParameterDirection.Input;
  arParams[12].Charset := FbCharset.OCTETS ;
   if FROM_IP <> nil then
   arParams[12].Value := FROM_IP;  <---booommmm
arParams[13] := new FbParameter('@REGISTER_DATETIME',FbDbType.TimeStamp);
  arParams[13].Direction := ParameterDirection.Input;
  if REGISTER_DATETIME <> nil then
  arParams[13].Value := REGISTER_DATETIME;
arParams[14] := new FbParameter('@EDIT_FROM_IP',FbDbType.VarChar, 16);
  arParams[14].Direction := ParameterDirection.Input;
  arParams[14].Charset := FbCharset.OCTETS ;
  if EDIT_FROM_IP <> nil then
  arParams[14].Value := EDIT_FROM_IP;   <-- booomm :-)
arParams[15] := new FbParameter('@EDIT_DATETIME',FbDbType.TimeStamp);
  arParams[15].Direction := ParameterDirection.Input;
  if EDIT_DATETIME <> nil then
  arParams[15].Value := EDIT_DATETIME;
  arParams[16] := new FbParameter('@PAY',CHAR(1));
  arParams[16].Direction := ParameterDirection.Input;
  arParams[16].Charset := FbCharset.ISO8859_1 ;
  if PAY <> nil then
  arParams[16].Value := PAY;
  arParams[17] := new FbParameter('@DELETED',CHAR(1));
  arParams[17].Direction := ParameterDirection.Input;
  arParams[17].Charset := FbCharset.ISO8859_1 ;
  if DELETED <> nil then
  arParams[17].Value := DELETED;
  arParams[18] := new FbParameter('@PASSWD',FbDbType.VarChar, 20);
  arParams[18].Direction := ParameterDirection.Input;
  arParams[18].Charset := FbCharset.ISO8859_1 ;
  if PASSWD <> nil then
  arParams[18].Value := PASSWD;
var rowsAffected: System.Int32 := FBSqlHelper.ExecuteNonQuery(connectionString, sqlCommand.ToString(), arParams);
  exit rowsAffected;
end;

REATE TABLE VAPAUSFESTIT_REGISTER_FORMS (
   ID                 GUID NOT NULL,
   EVENT_ID           GUID NOT NULL,
   REGISTER_LANG      CHAR(2) NOT NULL,
   FIRSTNAME          VARCHAR(50),
   LASTNAME           VARCHAR(100),
   FULL_NAME          VARCHAR(200),
   EMAIL              VARCHAR(100) NOT NULL,
   KITS               VARCHAR(100),
   PHONE              VARCHAR(50) NOT NULL,
   COMMENT_COLLATION  VARCHAR(8000),
   COMMENT_WORK       VARCHAR(8000),
   INFORM_EMAIL       CHAR(1),
   FROM_IP            VARCHAR(16) character set octets,
   REGISTER_DATETIME  TIMESTAMP,
   EDIT_FROM_IP       VARCHAR(16) character set octets,
   EDIT_DATETIME      TIMESTAMP,
   PAY                CHAR(1),
   DELETED            CHAR(1) DEFAULT 'F',
   PASSWD             VARCHAR(20)
);

--
Norbert Saint Georges
http://tetrasys.fi



Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to