Hello with Zeos 6.x i made a function that Result the size ( integer )r of max_allowed_packet and worked, now with zeos 7.x the same function give me back a Bytes result...is there a way to change back or any other walk around?
thnks
asking MySql Variable change from Zeos6.x and Zeos 7
-
- Fresh Boarder
- Posts: 15
- Joined: 03.11.2006, 13:57
-
- Platinum Boarder
- Posts: 1956
- Joined: 17.01.2011, 14:17
Re: asking MySql Variable change from Zeos6.x and Zeos 7
Hello, could you show us the source code, you are talking about?
Best regards, Jan
Best regards, Jan
-
- Fresh Boarder
- Posts: 15
- Joined: 03.11.2006, 13:57
Re: asking MySql Variable change from Zeos6.x and Zeos 7
Thanks, very simple
Qry := TZReadOnlyQuery.Create(nil);
Qry.Connection := pCon;
with Qry do begin
SQL.Text := 'Show variables like '+QuotedStr(pVarName);
Open;
case Fields[1].DataType of
ftString: Result := Fields[1].Value;
ftBlob: Result := Fields[1].Value;
ftMemo: Result := Fields[1].Value;
ftFmtMemo: Result := Fields[1].Value;
ftFixedChar: Result := Fields[1].Value;
ftWideString : Result := Fields[1].Value;
ftVarBytes : Result := Fields[1].Value;
ftBytes : Result := Fields[1].Value; // <======= in the past was Integer
ftInteger
,ftLargeint
,ftAutoInc
,ftSmallint
,ftFloat
,ftCurrency
,ftDateTime
,ftDate : Result := Fields[1].Value;
else Result := Fields[1].Value;
end;
// Result := Fields[1].Value; // <==== Previous and Worked on Zeos6.x
Qry := TZReadOnlyQuery.Create(nil);
Qry.Connection := pCon;
with Qry do begin
SQL.Text := 'Show variables like '+QuotedStr(pVarName);
Open;
case Fields[1].DataType of
ftString: Result := Fields[1].Value;
ftBlob: Result := Fields[1].Value;
ftMemo: Result := Fields[1].Value;
ftFmtMemo: Result := Fields[1].Value;
ftFixedChar: Result := Fields[1].Value;
ftWideString : Result := Fields[1].Value;
ftVarBytes : Result := Fields[1].Value;
ftBytes : Result := Fields[1].Value; // <======= in the past was Integer
ftInteger
,ftLargeint
,ftAutoInc
,ftSmallint
,ftFloat
,ftCurrency
,ftDateTime
,ftDate : Result := Fields[1].Value;
else Result := Fields[1].Value;
end;
// Result := Fields[1].Value; // <==== Previous and Worked on Zeos6.x
Re: asking MySql Variable change from Zeos6.x and Zeos 7
I don't know what exactly you are trying to achieve, but this is BAD code.
TField.Value is variant type, which means it can contain almost anything. When you assign a variant to an other variable Delphi will try to convert it for you; therefore a Result := Query.Fields[0].Value will always work (until the data in the database can be converted to your desired type, that is).
So in order to be able to help:
- What is the problem with your code? Does it throw an exception? Does it not compile? What errors you receive, what do you expect to happen and what happens instead?
- What do you mean ftBytes were Integer in the past...? I don't think a byte array was handled as integer ever.
- What is the return type of the function? Is Result a String or a Variant? (I hope nothing else...)
- Are you absolutely sure that ALL results can be converted to this type? If you are expecting a number then you are in for some nasty surprises. In this sample output your code will throw a variant conversion exception for sure: - Why are you using .Value? Why not .AsString or .AsInteger?
TField.Value is variant type, which means it can contain almost anything. When you assign a variant to an other variable Delphi will try to convert it for you; therefore a Result := Query.Fields[0].Value will always work (until the data in the database can be converted to your desired type, that is).
So in order to be able to help:
- What is the problem with your code? Does it throw an exception? Does it not compile? What errors you receive, what do you expect to happen and what happens instead?
- What do you mean ftBytes were Integer in the past...? I don't think a byte array was handled as integer ever.
- What is the return type of the function? Is Result a String or a Variant? (I hope nothing else...)
- Are you absolutely sure that ALL results can be converted to this type? If you are expecting a number then you are in for some nasty surprises. In this sample output your code will throw a variant conversion exception for sure: - Why are you using .Value? Why not .AsString or .AsInteger?
You do not have the required permissions to view the files attached to this post.
Delphi 12.2, Zeos 8 from latest GIT snapshot
Using:
- MySQL server 8.0.18; libmysql.dll 8.0.40 x64 5.7.19 x68, libmariadb.dll 3.3.11
- Oracle server 11.2.0, 12.1.0, 19.0.0; oci.dll 21.15
- MSSQL 2012, 2019; sybdb.dll FreeTDS_3102
- SQLite 3.47
Using:
- MySQL server 8.0.18; libmysql.dll 8.0.40 x64 5.7.19 x68, libmariadb.dll 3.3.11
- Oracle server 11.2.0, 12.1.0, 19.0.0; oci.dll 21.15
- MSSQL 2012, 2019; sybdb.dll FreeTDS_3102
- SQLite 3.47