الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

لماذا لايوجد الكامل في قواعد البيانات باستخدام DELPHI.NET

مغلق
بدأه زكيري عبد العالي في 13 أغسطس 2007 · 0 رد · 617 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1

السلام عليكم

هل هناك طريقتين فقط للاتصال بقاعدة ما

اقتباس
1-DataReaders

IDbDataAdapters-2

ولمادا DataReaders وان IDbDataAdapters اسهل بكثير ولما لا الاثنين معا

هدا مثال عن الريط ياكسس قمت بانشائه لكم مبتدا في .NET

ارجوا افادتي

{
  Unit : permettant d'interagir avec une base de données MS Access.
  <!-- Auteur  :  Zekiri abdelali  -->
	<!-- Version :  1.0			  -->
	<!-- Date	:  13/08/2007	   -->
  <!-- Group   : IACP INFORMATIQUE -->
}
unit AccessBDManager;
interface
uses System.Data.OleDb,System.Data;

function Get_ConnectionString : string;
function Get_Provider : string;
function  State : System.Data.ConnectionState;
procedure AccessBDOpen(BDPath : string );
function ExecuteRequest(SQLRequest : string) : Integer;
function ExecuteSelectRequest(SQLRequest : string) :OleDbDataReader   ;
procedure CloseReader();
procedure Free();

var
	/// Connexion à la base de données.
		connection : OleDbConnection;
	/// DataReader interne.
		reader	 : OleDbDataReader;
   ///  requête OLE
		command  : OleDbCommand;
implementation
//________________Obtient la chaîne de connexion à la base de données. _________

	function Get_ConnectionString : string;
	begin
				if connection <> nil then
			Result := connection.ConnectionString
				else
			Result := '';
	end;
//______________/// Obtient le fournisseur d'accès à la base de données. _______
			   /// <example>Microsoft Jet OLEDB</example>

	function Get_Provider : string;
	begin
				if connection <> nil then
					Result := connection.Provider
				else
					  Result := '';
   end;
//_____________________ Obtient le statut de la connexion. _____________________

   function  State : System.Data.ConnectionState;
   begin
				if connection <> nil  then
					  Result := connection.State
				else
					  Result := System.Data.ConnectionState.Closed;
  end;
//_______	Ouvre une connexion sans mot de passe à une base de données. _________
  procedure AccessBDOpen(BDPath : string );
  begin
			connection := OleDbConnection.Create('PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA Source=' + BDPath);
			// Ouvre la connexion.
			try
		  connection.Open();
	  Except on E: Exception do
		Console.WriteLine(E.Message)
	  end;
  end;
{___________Exécute une requête de type "non-query" sur la base de donnée
		 <param name="SQLRequest">La requête SQL.</param>
		 <returns>Le nombre de lignes affectées par la requête.</returns>
		 <exception cref="BDManager.BDManagerException"></exception>_______________}

	function ExecuteRequest(SQLRequest : string) : Integer;
  begin
			if (connection <> nil) and (connection.State = System.Data.ConnectionState.Open) then
	  begin
				  if (reader = nil)then
		  begin
			  command := OleDbCommand.Create(SQLRequest, connection);
						try
				  Result:= command.ExecuteNonQuery();
			  Except on E: Exception do
				  Console.WriteLine(E.Message)
			  end;
		  end
		  else
						Console.WriteLine('Impossible d''exécuter la requête car le DataReader de la requête précédente est demeuré ouvert.');
	  end
		  else
		  Console.WriteLine('Impossible d''exécuter la requête car la connexion est fermée.');
  end;
{___________Eécute une requête de type "SELECT" sur la base de données.
	 <param name="SQLRequest">La requête SQL</param>
	 <returns>Un DataReader pointant sur le jeu de résultats de la requête.</returns>
	 <exception cref="BDManager.BDManagerException"></exception>_________________}

   function ExecuteSelectRequest(SQLRequest : string) :OleDbDataReader   ;
		begin
			  if (connection <> nil) and (connection.State = System.Data.ConnectionState.Open) then
		begin
					if (reader = nil) then
				begin
						  command := OleDbCommand.create(SQLRequest, connection);
						  try
								reader := command.ExecuteReader();
				Except on E: Exception do
					Console.WriteLine(E.Message)
				end;
			   Result:= reader;
			end
			else
							  Console.WriteLine('Impossible d''exécuter la requête car le DataReader de la requête précédente est demeuré ouvert.');
		end
   		  else
						Console.WriteLine('Impossible d''exécuter la requête car la connexion est fermée.');
   end;
{_____Ferme le DataReader interne afin de pouvoir exécuter une nouvelle
							  requête sur la même connexion.___________________}
		procedure CloseReader();
	begin
				if (connection <> nil) and (connection.State = System.Data.ConnectionState.Open) then
		  begin
					  if (reader <> nil) then
			  begin // Ferme le DataReader.
							try
								  reader.Close();
					Except on E: Exception do
						Console.WriteLine(E.Message)
					end;
			  end
				else
							  Console.WriteLine('Impossible de fermer le DataReader car celui-ci l''est déjà.');
		  end
		  else
					  Console.WriteLine('Impossible de fermer le DataReader car la connexion est fermée.');
	end;
//________________ Ferme la connexion à la base de données._____________________
		procedure Free();
	begin
				if (connection <> nil) and (connection.State = System.Data.ConnectionState.Open) then
		  begin	// Ferme la connexion.
		 				try
							   if (reader <> nil) and (reader.IsClosed) then
								  CloseReader();
							  connection.Close();
							  connection := nil;
				Except on E: Exception do
					Console.WriteLine(E.Message)
				end;
		  end
				else
					  Console.WriteLine('Impossible de fermer la connexion car celle-ci l''est déjà.');
	end;
end.

كود الواجهة

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Borland.Vcl.StdCtrls, System.ComponentModel, Borland.Vcl.Mask,
  Borland.Vcl.DBCtrls, Borland.Vcl.Grids, Borland.Vcl.DBGrids;

type
  TForm1 = class(TForm)
	StringGrid1: TStringGrid;
	Label1: TLabel;
	Label2: TLabel;
	Label3: TLabel;
	Button5: TButton;
	Button6: TButton;
	Button7: TButton;
	Edit1: TEdit;
	Edit2: TEdit;
	Edit3: TEdit;
	procedure Button7Click(Sender: TObject);
	procedure Button6Click(Sender: TObject);
	procedure Button5Click(Sender: TObject);
	procedure FormCreate(Sender: TObject);
  private
	{ Private declarations }
	procedure SelectRecord(iRecno:integer);
  public
	{ Public declarations }
  end;

var
  Form1: TForm1;
  vSql:string;
implementation{$R *.nfm}
uses AccessBDManager,System.Data.OleDb,System.Data;
procedure TForm1.FormCreate(Sender: TObject);
var table : OleDbDataReader;
vRecordCount,i  : integer;
begin
AccessBDOpen('C:\\MyData.mdb') ;
table := AccessBDManager.ExecuteSelectRequest('select * from Table1 ORDER BY  Name');
StringGrid1.ColCount:= table.FieldCount;
for i:= 0 to StringGrid1.ColCount-1 do
	StringGrid1.Cells[i,0]:= table.GetName(i);


i:= 1;vRecordCount:=0;
while table.Read <> False do
begin
	StringGrid1.Cells[0,i]:= table.Item[0].ToString;
	StringGrid1.Cells[1,i]:= table.Item[1].ToString;
	StringGrid1.Cells[2,i]:= table.Item[2].ToString;
	i:=i+1;
	vRecordCount:=vRecordCount + 1;
end;
StringGrid1.RowCount:=vRecordCount;

SelectRecord(1);
end;

procedure TForm1.SelectRecord(iRecno:integer);
begin
edit1.Text:=StringGrid1.Cells[0,iRecno];
edit2.Text:=StringGrid1.Cells[1,iRecno];
edit3.Text:=StringGrid1.Cells[2,iRecno];
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
vSql:='INSERT INTO Table (NAME,City,Mobile) VALUES ('''+edit1.Text+' '','' '+edit2.Text+' '','+edit3.text+')';
ExecuteRequest(vSql);
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
vSql:='delete fro Table where name = '''+edit1.Text+'''';
ExecuteRequest(vSql);

end;

procedure TForm1.Button7Click(Sender: TObject);
begin
vSql:='UPDATE table SET name='''+edit1.Text+''', City ='''+edit2.Text+''', Mobile ='+edit3.text;
ExecuteRequest(vSql);


end;

end.

post-1034-1187020835_thumb.jpg

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…