From Clomosy Docs

No edit summary
No edit summary
 
(2 intermediate revisions by one other user not shown)
Line 59: Line 59:
var
var
   sourceQuery, targetQuery: TClSqlQuery;
   sourceQuery, targetQuery: TClSqlQuery;
begin
{
   sourceQuery := TClSqlQuery.Create(nil);
   sourceQuery = TClSqlQuery.Create(nil);
   targetQuery := TClSqlQuery.Create(nil);
   targetQuery = TClSqlQuery.Create(nil);
    
    
   // Establish the database connection
   // Establish the database connection
Line 68: Line 68:
   try
   try
     // Assign the same connection to both queries
     // Assign the same connection to both queries
     sourceQuery.Connection := Clomosy.DBSQLServerConnection;
     sourceQuery.Connection = Clomosy.DBSQLServerConnection;
     targetQuery.Connection := Clomosy.DBSQLServerConnection;
     targetQuery.Connection = Clomosy.DBSQLServerConnection;


     // Define and open the source query
     // Define and open the source query
     sourceQuery.SQL.Text := 'SELECT id, ad AS product_name, price AS product_price FROM ShippingProductInformation WHERE price = 125';
     sourceQuery.SQL.Text = 'SELECT id, ad AS product_name, price AS product_price FROM ShippingProductInformation WHERE price = 125';
     sourceQuery.Open;
     sourceQuery.Open;


     // Define the target query structure
     // Define the target query structure
     targetQuery.SQL.Text := 'SELECT * FROM ProductInformation WHERE 1=0';  
     targetQuery.SQL.Text = 'SELECT * FROM ProductInformation WHERE 1=0';  
     targetQuery.Open;  
     targetQuery.Open;  


Line 93: Line 93:
     sourceQuery.Free;
     sourceQuery.Free;
     targetQuery.Free;
     targetQuery.Free;
   end;
   }
end;
}
</pre>
</pre>
<div class="alert alert-danger" role="alert" data-bs-theme="light">
<div class="alert alert-danger" role="alert" data-bs-theme="light">
Line 103: Line 103:
<b>Example 1</b><br>
<b>Example 1</b><br>


<b>TRObject Syntax</b><br>
<pre>
<pre>
  Var
  Var
Line 121: Line 120:
   }
   }
  }
  }
</pre>
<b>Base Syntax</b><br>
<pre>
Var
LocalQ:TclSqlQuery;
begin
  Clomosy.DBSQLServerConnect('SQL Server','server_name','user_name','user_password','database_name',1433);
  LocalQ := Clomosy.DBSQLServerQueryWith('SELECT model AS Product_Model FROM OperatingSystem');
  LocalQ.First;
  with LocalQ do
  begin
    While NOT EOF Do
    Begin
      ShowMessage(FieldByName('Product_Model').AsString);
      Next;
    End;
  end;
end;
</pre>
</pre>


Line 159: Line 139:
</pre>
</pre>
<b>Code</b><br>
<b>Code</b><br>
<b>TRObject Syntax</b><br>
 
<pre>
<pre>
  var
  var
Line 238: Line 218:
   Form1.Run;
   Form1.Run;
  }
  }
</pre>
<b>Base Syntax</b><br>
<pre>
var
  Combo1,Combo2 : TClComboBox;
  Form1:TclForm;
procedure combo1DataLoad
var
  citiesQuery :TclSQLQuery;
begin
  citiesQuery := TclSQLQuery.Create(Nil);
 
  try
    citiesQuery := Clomosy.DBSQLServerQueryWith('SELECT plate_code,city_name FROM Cities');
    citiesQuery.Open;
    while not citiesQuery.Eof do
    begin
      Combo1.AddItem(citiesQuery.FieldByName('city_name').AsString,citiesQuery.FieldByName('plate_code').AsString);
      citiesQuery.Next;
    end;
  finally
    citiesQuery.Free;
  end;
end;
procedure combo2DataLoad(getID);
var
  clDataQuery2 :TclSQLQuery;
begin
  clDataQuery2 := TclSQLQuery.Create(Nil);
 
  Combo2.Clear;
  try
    clDataQuery2 := Clomosy.DBSQLServerQueryWith('SELECT * FROM Districts WHERE city_id = '+getID+'');
    clDataQuery2.Open;
   
    while not clDataQuery2.Eof do
    begin
      Combo2.AddItem(clDataQuery2.FieldByName('district_name').AsString,clDataQuery2.FieldByName('id').AsString);
      clDataQuery2.Next;
    end;
  finally
    clDataQuery2.Free;
  end;
end;
procedure ComboSelected;
var
  cityID : String;
begin
  cityID := Combo1.GetValueIndex(Combo1.ItemIndex);
  combo2DataLoad(cityID);
end;
begin
  Form1 := TclForm.Create(Self);
  try
    Clomosy.DBSQLServerConnect('SQL Server','PCTEST','testUser','123**','TestDb',1433);
  except
    ShowMessage('Exception Class: '+LastExceptionClassName+' Exception Message: '+LastExceptionMessage);
  end;
  Combo1 := Form1.AddNewComboBox(Form1,'Combo1');
  Combo1.Align := alMostTop;
  Combo1.Width := 150;
  Combo1.Margins.Top:=10;
  Combo1.Margins.Left :=50;
  Combo1.Margins.Right :=50;
  combo1DataLoad;
  Form1.AddNewEvent(Combo1,tbeOnChange,'ComboSelected');
 
  Combo2 := Form1.AddNewComboBox(Form1,'Combo2');
  Combo2.Align := alTop;
  Combo2.Width := 150;
  Combo2.Margins.Top:=10;
  Combo2.Margins.Left :=50;
  Combo2.Margins.Right :=50;
 
  Form1.Run;
end;
</pre>
</pre>


<h2>See Also</h2>
<h2>See Also</h2>
* [[Clomosy_Class#Database_Connectivity|Database Connectivity]]
* [[Clomosy_Class#Database_Connectivity|Database Connectivity]]
* [[Database Commands|Database Commands]]
{{#seo:|description=Learn about SQL Server Queries in Clomosy Docs. A guide to writing and optimizing SQL queries for effective database management in your apps.}}

Latest revision as of 14:19, 23 December 2024

SQL Server is a relational database management system (RDBMS) developed by Microsoft. It is used to store, manage, query, and process data in the database. It is based on the relational database concept and is managed using SQL (Structured Query Language).

DBSQLServerConnect is a method used to create a connection object and connect to the database. This object contains the connection information and establishes a database connection based on this information.

Use of:

Clomosy.DBSQLServerConnect('SQL
Server','CloData','testClo','123456','DBClo',1433);

The result of a query obtained from the database belongs to the TclSQLQuery class. Therefore, an object of this class must first be defined to retrieve data from the table.

var
 clomosyQ1 :TclSQLQuery;

To execute queries with the database using a global connection object, use the `DBSQLServerConnection` property. This property links an existing database connection to the query object you define.

`Clomosy.DBSQLServerConnection` is a globally defined and already established SQL Server connection. Once this connection is successfully set up elsewhere, you can execute your queries using this connection.

The goal is to avoid creating a new connection for each query, instead reusing the same connection (`DBSQLServerConnection`) across multiple queries. This improves efficiency and simplifies connection management.

clomosyQ1.Connection = Clomosy.DBSQLServerConnection;

The DBSQLServerQueryWith function is used to directly execute an SQL query on the defined object.

clomosyQ1 = Clomosy.DBSQLServerQueryWith('SELECT * FROM table_name');

Another method is the DBSQLServerQuery function. This method is used to define the SQL query, but it does not execute it directly like the DBSQLServerQueryWith function. An additional operation is required to execute the query (such as Open or OpenOrExecute).

Clomosy.DBSQLServerQuery.Sql.Text = 'SELECT * FROM table_name';
Clomosy.DBSQLServerQuery.Open;


Example 1

 Var
 LocalQ:TclSqlQuery;
 
 { 
   Clomosy.DBSQLServerConnect('SQL Server','server_name','user_name','user_password','database_name',1433);
   LocalQ = Clomosy.DBSQLServerQueryWith('SELECT model AS Product_Model FROM OperatingSystem');
   LocalQ.First;
   with LocalQ do
   {
     While (NOT EOF)
     {
       ShowMessage(FieldByName('Product_Model').AsString);
       Next;
     }
   }
 }

Example 2:
As an example application, two comboboxes will be created, where the first one will list cities in Turkey and the second one will list districts. Cities will be retrieved from the Cities table in the testDb database. The district combobox will remain empty until a city is selected. When a city is selected, districts corresponding to the selected city will be retrieved from the Districts table based on a query performed on the database and populated into the second combobox.

In this example, initially, two tables named Cities and Districts will be created in the testDb database using Microsoft SQL Server Management Studio. The Cities table will consist of id, plate_code, and city_name fields. The Districts table will consist of id, city_id, and district_name fields.

Below are the tables created:
Tables.png

The Combo1 combobox object created for cities is populated with all the data from the Cities table as a query result from SQL.

SELECT plate_code,city_name FROM Cities

When the list in the Combo1 combobox is clicked, the corresponding data from the Districts table is retrieved based on the selected city id from the combobox and listed in the Combo2 object.

SELECT * FROM Districts WHERE city_id = '+getID+'

Code

 var
   Combo1,Combo2 : TClComboBox;
   Form1:TclForm;
 
 void combo1DataLoad
 var
   citiesQuery :TclSQLQuery;
 {
   citiesQuery = TclSQLQuery.Create(Nil);
   
   try
     citiesQuery = Clomosy.DBSQLServerQueryWith('SELECT plate_code,city_name FROM Cities');
     citiesQuery.Open;
     while (not citiesQuery.Eof)
     {
       Combo1.AddItem(citiesQuery.FieldByName('city_name').AsString,citiesQuery.FieldByName('plate_code').AsString);
       citiesQuery.Next;
     }
   finally
     citiesQuery.Free;
   }
 }
 
 void combo2DataLoad(getID);
 var
   clDataQuery2 :TclSQLQuery;
 {
   clDataQuery2 = TclSQLQuery.Create(Nil);
   
   Combo2.Clear;
   try
     clDataQuery2 = Clomosy.DBSQLServerQueryWith('SELECT * FROM Districts WHERE city_id = '+getID+'');
     clDataQuery2.Open;
     
     while (not clDataQuery2.Eof)
     {
       Combo2.AddItem(clDataQuery2.FieldByName('district_name').AsString,clDataQuery2.FieldByName('id').AsString);
       clDataQuery2.Next;
     }
   finally
     clDataQuery2.Free;
   }
 }
 
 void ComboSelected;
 var
   cityID : String;
 {
   cityID = Combo1.GetValueIndex(Combo1.ItemIndex);
   combo2DataLoad(cityID);
 }
 
 {
   Form1 = TclForm.Create(Self);
   try
     Clomosy.DBSQLServerConnect('SQL Server','PCTEST','testUser','123**','TestDb',1433);
   except
     ShowMessage('Exception Class: '+LastExceptionClassName+' Exception Message: '+LastExceptionMessage);
   }
   Combo1 = Form1.AddNewComboBox(Form1,'Combo1');
   Combo1.Align = alMostTop;
   Combo1.Width = 150;
   Combo1.Margins.Top=10;
   Combo1.Margins.Left =50;
   Combo1.Margins.Right =50;
   combo1DataLoad;
   Form1.AddNewEvent(Combo1,tbeOnChange,'ComboSelected');
   
   Combo2 = Form1.AddNewComboBox(Form1,'Combo2');
   Combo2.Align = alTop;
   Combo2.Width = 150;
   Combo2.Margins.Top=10;
   Combo2.Margins.Left =50;
   Combo2.Margins.Right =50;
   
   Form1.Run;
 }

See Also