I use connections over internet to MySQL with SSL, using TCP/IP.
I was thinking about to speed up returns from database. Implementation of HTTP 3.0 protocol to do this can be a good thing, one tunel HTTP 3.0.
Secure bridge suports HTTP transport between server and client, so my sugestion implementation to supports HTTP 3.0 in the future.
(Here is some good documentation: https://quicwg.org/base-drafts/draft-ie ... .section.3)
Roberto Novakosky
Search found 26 matches
- Fri 11 Oct 2019 00:50
- Forum: SecureBridge
- Topic: Only one Sugestion HTTP 3.0 (HTTP-over-QUIC)
- Replies: 1
- Views: 2528
- Mon 11 Aug 2014 18:49
- Forum: MySQL Data Access Components
- Topic: TDataSetProvider X TMyQuery
- Replies: 2
- Views: 1641
Re: TDataSetProvider X TMyQuery
Thank You !
Works fine
Works fine
- Thu 07 Aug 2014 16:56
- Forum: MySQL Data Access Components
- Topic: TDataSetProvider X TMyQuery
- Replies: 2
- Views: 1641
TDataSetProvider X TMyQuery
(My question is similar to question 2 on http://forums.devart.com/viewtopic.php?t=21443)
I have TClientDataSet + TDataSetProvider + TMyQuery
I apply Changes as ...
To intercept and see RowsAffected I am doing:
on MyDataSetProvider1.AfterApplyUpdates, p example:
but RowsAffected returning '-1' always.
How to use this way with TMyQuery ?
Well, is possible to do this way (with 'SELECT ROW_COUNT')
...
I have TClientDataSet + TDataSetProvider + TMyQuery
I apply Changes as ...
Code: Select all
MyClientDataSet1.Open; ...
MyClientDataSet1.Delete; ...
...
MyConn.StartTransaction;
MyDataSetProvider1.ApplyUpdates(MyClientDataSet1.Delta, 0, myTransactionErrorCount);
...
here I want to know RowsAffected but not working...
(if I have at least 1 deleted record so must shows 1 record affected)
...
MyConn.Commit and MergeChangeLog to all ClientDataSets or Rollback all;
on MyDataSetProvider1.AfterApplyUpdates, p example:
Code: Select all
ShowMessage(IntToStr(TMyQuery((Sender as TDataSetProvider).DataSet).RowsAffected));
How to use this way with TMyQuery ?
Well, is possible to do this way (with 'SELECT ROW_COUNT')
...
Code: Select all
MyConn.StartTransaction;
MyDataSetProvider1.ApplyUpdates(MyClientDataSet1.Delta, 0, myTransactionErrorCount);
qu.SQL.Text := 'SELECT ROW_COUNT();';
qu.Open;
myAffectedRows := qu.Fields[0].AsString;
qu.Close;
...
MyConn.Commit and MergeChangeLog to all ClientDataSets or Rollback all;
- Wed 16 Apr 2014 16:26
- Forum: MySQL Data Access Components
- Topic: About DATETIME with fractional seconds
- Replies: 1
- Views: 1218
About DATETIME with fractional seconds
About new support to Fractional seconds in Time Values of MySQL 5.6/5.7
Since MySQL 5.6.4, there is support to DATETIME as '2014-02-02 10:05:45.123456'.
Example:
CREATE TABLE `mytest` (
`dt_hr_id` DATETIME(3) NOT NULL,
PRIMARY KEY (`dt_hr_id`)
);
Using the MyDAC... 'SELECT * from mytest;'
...
if DateTime '2014-02-02 10:05:45.123'.
ShowMessage(FormatDateTime('hh:nn:ss.zzz' ,MyQuery.Fields[0].AsDateTime));
shows '10:05:45.000' ...
I know about some limitations of Delphi, but above, why it shows '.000' ?
Is there a way to use it with MyDAC without use of MICROSECOND() of MySQL ?
Roberto
Since MySQL 5.6.4, there is support to DATETIME as '2014-02-02 10:05:45.123456'.
Example:
CREATE TABLE `mytest` (
`dt_hr_id` DATETIME(3) NOT NULL,
PRIMARY KEY (`dt_hr_id`)
);
Using the MyDAC... 'SELECT * from mytest;'
...
if DateTime '2014-02-02 10:05:45.123'.
ShowMessage(FormatDateTime('hh:nn:ss.zzz' ,MyQuery.Fields[0].AsDateTime));
shows '10:05:45.000' ...
I know about some limitations of Delphi, but above, why it shows '.000' ?
Is there a way to use it with MyDAC without use of MICROSECOND() of MySQL ?
Roberto
- Fri 07 Feb 2014 12:32
- Forum: MySQL Data Access Components
- Topic: IsolationLevel problem to set ?
- Replies: 1
- Views: 1303
IsolationLevel problem to set ?
Hello
If I have a TMyConnection, and change the IsolationLevel ...
myConn.IsolationLevel := ilReadUnCommitted;
//test to verify on SGDB
qu := TMyQuery.Create(nil);
qu.Connection := myConn;
qu.SQL.Text := 'show variables like ''tx_isolation'';';
qu.Open;
ShowMessage(qu.Fields[1].AsString); <<<-- detection of problem
qu.Close;
//----
myConn.IsolationLevel := ilReadUnCommitted; isn't working at level of database, only on object myConn, the test shows p example 'REPEATABLE-READ'
only if I do manually 'SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;'
than shows 'READ-UNCOMMITED'
or after one first call to myConn.StartTransaction; so works fine
To correct this for a while in my codes, I am doing this sequence
1 - myConn.IsolationLevel := theIsolationLevelIWant;
2 - SQL Manually 'SET SESSION TRANSACTION ISOLATION LEVEL 'theIsolationLevelIWant';'
Well, I think myConn.IsolationLevel := theIsolationLevelIWant must work at SGDB in time of set property on object myConn if myConn.Active. Is it the right ?
Roberto Novakosky
Obs.: with MyDAC Version 8.2.5 on Delphi 2007 (MySQL 5.1 and others)
If I have a TMyConnection, and change the IsolationLevel ...
myConn.IsolationLevel := ilReadUnCommitted;
//test to verify on SGDB
qu := TMyQuery.Create(nil);
qu.Connection := myConn;
qu.SQL.Text := 'show variables like ''tx_isolation'';';
qu.Open;
ShowMessage(qu.Fields[1].AsString); <<<-- detection of problem
qu.Close;
//----
myConn.IsolationLevel := ilReadUnCommitted; isn't working at level of database, only on object myConn, the test shows p example 'REPEATABLE-READ'
only if I do manually 'SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;'
than shows 'READ-UNCOMMITED'
or after one first call to myConn.StartTransaction; so works fine
To correct this for a while in my codes, I am doing this sequence
1 - myConn.IsolationLevel := theIsolationLevelIWant;
2 - SQL Manually 'SET SESSION TRANSACTION ISOLATION LEVEL 'theIsolationLevelIWant';'
Well, I think myConn.IsolationLevel := theIsolationLevelIWant must work at SGDB in time of set property on object myConn if myConn.Active. Is it the right ?
Roberto Novakosky
Obs.: with MyDAC Version 8.2.5 on Delphi 2007 (MySQL 5.1 and others)
- Fri 02 Aug 2013 14:06
- Forum: MySQL Data Access Components
- Topic: C++ Builder 2007 - Unable to open file MYDACVCL105.OBJ
- Replies: 3
- Views: 1662
Re: C++ Builder 2007 - Unable to open file MYDACVCL105.OBJ
Resolved
I did a new project and added all files (as my old project), so the problem finished. I dont know what was the cause of problem, maybe a corrupted file but it is Ok now and this problem occurred only with one of my projects.
Roberto
I did a new project and added all files (as my old project), so the problem finished. I dont know what was the cause of problem, maybe a corrupted file but it is Ok now and this problem occurred only with one of my projects.
Roberto
- Mon 29 Jul 2013 20:08
- Forum: MySQL Data Access Components
- Topic: MyDac or UniDac with TMySQLUniProvider
- Replies: 4
- Views: 1638
Re: MyDac or UniDac with TMySQLUniProvider
Very Thanks
- Mon 29 Jul 2013 15:14
- Forum: MySQL Data Access Components
- Topic: Record was changed by user ...
- Replies: 4
- Views: 22674
Re: Record was changed by user ...
Hello smww
See on MySQL database if the field has trigger or default value when your app sets to null. Maybe one trigger changes the field or the default value rewrites your null value.
Roberto
See on MySQL database if the field has trigger or default value when your app sets to null. Maybe one trigger changes the field or the default value rewrites your null value.
Roberto
- Mon 29 Jul 2013 14:32
- Forum: MySQL Data Access Components
- Topic: TDatasource or TMyDataSource
- Replies: 5
- Views: 1738
Re: TDatasource or TMyDataSource
I generally prefer
TMyConnection -> TMyQuery -> TDatasetProvider -> TClientdataset -> TDatasource
(TMYQuery always uniDirectional this way)
because I can change (TMyConnection -> TMyQuery) and dont need to modify (TDatasetProvider -> TClientdataset -> TDatasource) in code
because too, compatibility to access difeerent databases through different tecnologies (DBGo, DbExpress...) or because working 3 tiers
I use this form too to work with transactions, you can use:
..StartTransaction
myDataSetProvider.ApplyUpdates(myclientDataSet.Delta, 0, TransactionErrorCount);
... (not directly query or clientdataset.Aplly, but trhough DataSetProvider)
other dataSetProviders.ApplyAUdates...
... commit or rollback happens
...
so only if commit OK to all dataSetrProviders.ApplyUpdates I do myclientDataSets.MergeChangeLog
otherwise I maintain the original change log on ClientDataSets because rollback all
If I do directly myQuery.ApplyUpdates I cant keep change log this way.
I think
if I need transactions to multiple clientDataSets at the same time,
or if I need change tecnology in code
is better to me
TMyConnection -> TMyQuery -> TDatasetProvider -> TClientdataset -> TDatasource
If I need only access MySQL and I dont need transactions or ChangeLogs so the performance of TMyConnection -> TMyQuery -> TMyDataSource is better.
Roberto
TMyConnection -> TMyQuery -> TDatasetProvider -> TClientdataset -> TDatasource
(TMYQuery always uniDirectional this way)
because I can change (TMyConnection -> TMyQuery) and dont need to modify (TDatasetProvider -> TClientdataset -> TDatasource) in code
because too, compatibility to access difeerent databases through different tecnologies (DBGo, DbExpress...) or because working 3 tiers
I use this form too to work with transactions, you can use:
..StartTransaction
myDataSetProvider.ApplyUpdates(myclientDataSet.Delta, 0, TransactionErrorCount);
... (not directly query or clientdataset.Aplly, but trhough DataSetProvider)
other dataSetProviders.ApplyAUdates...
... commit or rollback happens
...
so only if commit OK to all dataSetrProviders.ApplyUpdates I do myclientDataSets.MergeChangeLog
otherwise I maintain the original change log on ClientDataSets because rollback all
If I do directly myQuery.ApplyUpdates I cant keep change log this way.
I think
if I need transactions to multiple clientDataSets at the same time,
or if I need change tecnology in code
is better to me
TMyConnection -> TMyQuery -> TDatasetProvider -> TClientdataset -> TDatasource
If I need only access MySQL and I dont need transactions or ChangeLogs so the performance of TMyConnection -> TMyQuery -> TMyDataSource is better.
Roberto
- Mon 29 Jul 2013 13:26
- Forum: MySQL Data Access Components
- Topic: MyDac or UniDac with TMySQLUniProvider
- Replies: 4
- Views: 1638
Re: MyDac or UniDac with TMySQLUniProvider
I would like to know too.
Is there diferences between MyDAC and UniDAC to access MySQL ? Which is better or are equal in performance ?
Is there diferences between MyDAC and UniDAC to access MySQL ? Which is better or are equal in performance ?
- Mon 29 Jul 2013 13:11
- Forum: MySQL Data Access Components
- Topic: Performance & low memory - Opinion
- Replies: 2
- Views: 1358
Re: Performance & low memory - Opinion
The pooling is rigth.
Dont forget: if you dont need anymore one connection, do disconect, so connection returns to pool (when pooling is true) and you can to reuse it later.
Your TMyQuery.Create has a problem, maybe is only your copy of piece of code...
In your code you created more than one TQuery object:
"I mostly use TMyQuery. This is the way I use them :
daSQLQuery:= TMyQuery.Create(self); << (dont need this)
try
daSQLQuery.Connection:= GetDatabaseConnection(databaseName);
daSQLQuery:= TMyQuery.Create(self); << (this line must be before "daSQLQuery.Connection:= GetDatabaseConnection(databaseName);")
daSQLQuery.FetchAll:= false;
...
"
You got 2 connections
daSQLQuery.Connection:= GetDatabaseConnection(databaseName);
daSQLQuery.Connection:= GetDatabaseConnection(zRemoteCommand.getDatabaseName);
but freed only one in
daSQLQuery.Connection.Disconnect;
I think you copied lines from diferent piece of logic codes because the logic must be:
daSQLQuery.Connection:= GetDatabaseConnection(databaseName);
.. you use the connection
.. so you do disconnect to return it to the pool
other connection:
daSQLQuery.Connection:= GetDatabaseConnection(zRemoteCommand.getDatabaseName);
.. you use the connection
.. so you do disconnect to return it to the pool
...
this sequence is right:
try
daSQLQuery:= TMyQuery.Create(self);
daSQLQuery.Connection:= GetDatabaseConnection(databaseName);
daSQLQuery.FetchAll:= false;
daSQLQuery.FetchRows:= 16;
daSQLQuery.Options.FlatBuffers:= true;
daSQLQuery.Options.StrictUpdate:= false;
daSQLQuery.ReadOnly:= true;
daSQLQuery.UniDirectional:= true;
if (not(daSQLQuery.Eof)) then
...
finally
daSQLQuery.Close;
daSQLQuery.Connection.Close;
daSQLQuery.Connection.Disconnect;
FreeAndNil(daSQLQuery);
end;
...other try
try
daSQLQuery:= TMyQuery.Create(self);
daSQLQuery.Connection:= GetDatabaseConnection(zRemoteCommand.getDatabaseName);
daSQLQuery.SQL.Text:= fdUTF8ToString(sSQL);
daSQLQuery.Execute;
daSQLQuery.First;
if (not(daSQLQuery.Eof)) then
...
finally
daSQLQuery.Close;
daSQLQuery.Connection.Close;
daSQLQuery.Connection.Disconnect;
FreeAndNil(daSQLQuery);
end;
Dont forget to see max_connectios of myini file from MySQL too. Must support your necessary connections.
Roberto
Dont forget: if you dont need anymore one connection, do disconect, so connection returns to pool (when pooling is true) and you can to reuse it later.
Your TMyQuery.Create has a problem, maybe is only your copy of piece of code...
In your code you created more than one TQuery object:
"I mostly use TMyQuery. This is the way I use them :
daSQLQuery:= TMyQuery.Create(self); << (dont need this)
try
daSQLQuery.Connection:= GetDatabaseConnection(databaseName);
daSQLQuery:= TMyQuery.Create(self); << (this line must be before "daSQLQuery.Connection:= GetDatabaseConnection(databaseName);")
daSQLQuery.FetchAll:= false;
...
"
You got 2 connections
daSQLQuery.Connection:= GetDatabaseConnection(databaseName);
daSQLQuery.Connection:= GetDatabaseConnection(zRemoteCommand.getDatabaseName);
but freed only one in
daSQLQuery.Connection.Disconnect;
I think you copied lines from diferent piece of logic codes because the logic must be:
daSQLQuery.Connection:= GetDatabaseConnection(databaseName);
.. you use the connection
.. so you do disconnect to return it to the pool
other connection:
daSQLQuery.Connection:= GetDatabaseConnection(zRemoteCommand.getDatabaseName);
.. you use the connection
.. so you do disconnect to return it to the pool
...
this sequence is right:
try
daSQLQuery:= TMyQuery.Create(self);
daSQLQuery.Connection:= GetDatabaseConnection(databaseName);
daSQLQuery.FetchAll:= false;
daSQLQuery.FetchRows:= 16;
daSQLQuery.Options.FlatBuffers:= true;
daSQLQuery.Options.StrictUpdate:= false;
daSQLQuery.ReadOnly:= true;
daSQLQuery.UniDirectional:= true;
if (not(daSQLQuery.Eof)) then
...
finally
daSQLQuery.Close;
daSQLQuery.Connection.Close;
daSQLQuery.Connection.Disconnect;
FreeAndNil(daSQLQuery);
end;
...other try
try
daSQLQuery:= TMyQuery.Create(self);
daSQLQuery.Connection:= GetDatabaseConnection(zRemoteCommand.getDatabaseName);
daSQLQuery.SQL.Text:= fdUTF8ToString(sSQL);
daSQLQuery.Execute;
daSQLQuery.First;
if (not(daSQLQuery.Eof)) then
...
finally
daSQLQuery.Close;
daSQLQuery.Connection.Close;
daSQLQuery.Connection.Disconnect;
FreeAndNil(daSQLQuery);
end;
Dont forget to see max_connectios of myini file from MySQL too. Must support your necessary connections.
Roberto
- Fri 26 Jul 2013 19:50
- Forum: MySQL Data Access Components
- Topic: C++ Builder 2007 - Unable to open file MYDACVCL105.OBJ
- Replies: 3
- Views: 1662
C++ Builder 2007 - Unable to open file MYDACVCL105.OBJ
When I use MyDAC 7.6.12 all works fine
if I am with 8.0.1 or 8.0.2, one of my C++ Builder's project shows:
[ILINK32 Error]Fatal: Unable to open file 'MYDACVCL105.OBJ'
If I do downgrade to MyDAC 7.6.12 so all works OK again.
(Windows XP - RAD Studio 2007)
Generally this problem occurs because path missing, when .lib not found, but this it is not the problem. I tried to add mydacvcl105.lib to project but the problem is the same...
Maybe one configuration on project. Has anyone had this problem?
Roberto
if I am with 8.0.1 or 8.0.2, one of my C++ Builder's project shows:
[ILINK32 Error]Fatal: Unable to open file 'MYDACVCL105.OBJ'
If I do downgrade to MyDAC 7.6.12 so all works OK again.
(Windows XP - RAD Studio 2007)
Generally this problem occurs because path missing, when .lib not found, but this it is not the problem. I tried to add mydacvcl105.lib to project but the problem is the same...
Maybe one configuration on project. Has anyone had this problem?
Roberto
- Thu 05 Jul 2012 13:19
- Forum: MySQL Data Access Components
- Topic: About Support Site - Off Topic
- Replies: 5
- Views: 1658
Re: About Support Site - Off Topic
Confirmed.
I tested with other email provider (@gmail.com) and works fine.
With @terra.com.br fails.
Additional Information: I received a log error trying sendo email do other server (digitalriver.com) using @terra.com.br:
"Sender address rejected:SPF fail - dc5snat01.digitalriver.com[85.255.19.254] is not allowed to send mail with the domain terra.com.br"
I think is the same problem around Internet Routing.
Very thanks.
I tested with other email provider (@gmail.com) and works fine.
With @terra.com.br fails.
Additional Information: I received a log error trying sendo email do other server (digitalriver.com) using @terra.com.br:
"Sender address rejected:SPF fail - dc5snat01.digitalriver.com[85.255.19.254] is not allowed to send mail with the domain terra.com.br"
I think is the same problem around Internet Routing.
Very thanks.
- Wed 04 Jul 2012 19:23
- Forum: MySQL Data Access Components
- Topic: About Support Site - Off Topic
- Replies: 5
- Views: 1658
Re: About Support Site - Off Topic
I did new requests today with the subjetct 'Test' from diferent IPs, using Internet Explorer and Google Chrome. (on www.devart.com | Support | Request Support)
My control SPAM is disabled. I didn't received the copy to email yet.
On site I received the message "Thank you for your feedback. You will receive a reply shortly'
The IPs are from Brasil, I tested from 2 different computers. I would like to identify the problem.
Roberto Novakosky
My control SPAM is disabled. I didn't received the copy to email yet.
On site I received the message "Thank you for your feedback. You will receive a reply shortly'
The IPs are from Brasil, I tested from 2 different computers. I would like to identify the problem.
Roberto Novakosky
- Tue 03 Jul 2012 14:50
- Forum: MySQL Data Access Components
- Topic: About Support Site - Off Topic
- Replies: 5
- Views: 1658
About Support Site - Off Topic
I always receive quick responses.
Last week I used support page and email but without response.
About Support, I marked "receive copy" but i didnt receive the copy...
Is the site or support with problems ?
Anyone with the same problem ?
Last week I used support page and email but without response.
About Support, I marked "receive copy" but i didnt receive the copy...
Is the site or support with problems ?
Anyone with the same problem ?