I use Delphi 2010, Firebird 2.5.2, IBExpress components.
Database charset is UTF8. In db-connection UTF8.
Database:
var
Database: TIBDatabase;
begin
...
Database.params.Clear;
Database.params.Add('user ''SYSDBA'' password ''masterkey'' ');
Database.params.Add('page_size 16384');
Database.params.Add('default character set UTF8');
Table:
CREATE TABLE NEW_TABLE (
NEW_FIELD VARCHAR(255)
);
connection code:
Database.params.Clear;
Database.params.Add('user_name=SYSDBA');
Database.params.Add('password=masterke');
Database.params.Add('sql_role_name=UTF8');
Database.Open;
insert code:
var
IBSQL: TIBSQL;
begin
IBSQL := TIBSQL.Create(nil);
try
IBSQL.Database := db;
IBSQL.Transaction := tr
IBSQL.SQL.Text := 'insert into NEW_TABLE (NEW_FIELD) values (:param)';
IBSQL.params[0].Value := 'Ãabc©'; // unsupported symbols :(
if not IBSQL.Transaction.Active then
IBSQL.Transaction.StartTransaction;
IBSQL.ExecQuery; // "Malformed string" exception here
if IBSQL.Transaction.Active then
IBSQL.Transaction.Commit;
finally
FreeAndNil(IBSQL);
end;
end;
I get "Malformed string" exception. How to insert this string?
N
VARCHAR(255) ); ? – VictoriavictorianIBExpert
tool. Don't know if FlameRobin would show inherited default charset... – Sheldonfb.InsertRecord(fdb, nil, 'TESTTABLE', ['ID', 'NAME', 'SUMMA'], [1, 'FIREBIRD - FOREVER', 100500]);
looks easier than this whole snippet :-) – Sheldon