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