Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Поделитесь опытом связь клиентского ПО с СУБД / 1 сообщений из 1, страница 1 из 1
01.02.2005, 20:43
    #32895757
_svs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поделитесь опытом связь клиентского ПО с СУБД
Доброго всем!
Хочется очень узнать кто какие методы использует для связи клиентского приложения с сервером БД (или с локальной).
Не важно какой язык используется и какая СУБД. Интересует сам подход.
Особенно интересно в свете ООП.
Как производится выборка данных? Как - операции сохранения, удаления, изменения? Как с данными в дальнейшем приложение работает? Если можно с примерами кода.
Для почину два варианта:
1
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
type
  TSocStatus = class(TDBObj)
   private
    FIdSocStatus: integer;
    FSocStatus: string;
    procedure SetIdSocStatus(const Value: integer);
    procedure SetSocStatus(const Value: string);
   public
      constructor Create;
      destructor Destroy;override;
      class function GetSqlText:string; override;
      property IdSocStatus:integer read FIdSocStatus write SetIdSocStatus;
      property SocStatus:string read FSocStatus write SetSocStatus;
      procedure Open; override;
      procedure Delete; override;
      procedure Save; override;
  end;

  TListSocStatus = class(TDBList)
  private

  public
    constructor Create;
    destructor Destroy; override;
    class function GetSqlText:string; override;
    procedure Load;override;
  end;
..................................................................
class function TSocStatus.GetSqlText: string;
begin
 Result:=TListSocStatus.GetSqlText+' WHERE ID_SOCSTATUS=%d';
end;

procedure TSocStatus.Open;
var ds:TDataSet;
begin
 if Assigned(idll) then begin
       try
          ds:=idll.GetDataSet(Format(Self.GetSqlText,[FIdSocStatus]));
          ds.Open;
            Self.SocStatus := ds.FieldByName('NAME_SOCSTATUS').AsString;
            Self.IdSocStatus := ds.FieldByName('ID_SOCSTATUS').AsInteger;
            Self.IsNew:=false;
          ds.Close;
          ds.Free;
       except on e:Exception do begin
           ds.Free;
           raise;
        end;
       end;
 end;
end;

procedure TListSocStatus.Load;
var ds:TDataSet;
    ss:TSocStatus;
begin
 if Assigned(idll) then begin
       try
          ds:=idll.GetDataSet(Self.GetSqlText);
          ds.Open;
          Self.Clear;
          while not ds.Eof do begin
            ss:=TSocStatus.Create;
            ss.SocStatus := ds.FieldByName('NAME_SOCSTATUS').AsString;
            ss.IdSocStatus := ds.FieldByName('ID_SOCSTATUS').AsInteger;
            ss.IsNew:=false;
            Self.Add(ss);
            ds.Next;
          end;
          ds.Close;
          ds.Free;
       except on e:Exception do begin
           ds.Free;
           raise;
        end;
       end;
 end;
end;
...................................................................................
//из примеров VS.NET
2

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
string strAccessConn = "Provider=MSDAORA.1;Password=***;User ID=dean;Data Source=iasudb";
      string strAccessSelect = "SELECT * FROM ADMIN.DEAN_SVS_GROUPS";

      // Create the dataset and add the Categories table to it:
      DataSet myDataSet = new DataSet();
      myDataSet.Tables.Add("ADMIN.DEAN_SVS_GROUPS");
      
      // Create Access objects:
      OleDbConnection myAccessConn = new OleDbConnection(strAccessConn);
      OleDbCommand myAccessCommand = new OleDbCommand(strAccessSelect,myAccessConn);
      OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand);

      myAccessConn.Open();

      try
      {
         myDataAdapter.Fill(myDataSet,"ADMIN.DEAN_SVS_GROUPS");
      }
      finally
      {
         myAccessConn.Close();
      }

      try
      {
         DataTableCollection dta = myDataSet.Tables;
         foreach (DataTable dt in dta)
         {
            Console.WriteLine("Found data table {0}", dt.TableName);
         }
         Console.WriteLine("{0} tables in data set", myDataSet.Tables.Count);
         Console.WriteLine("{0} tables in data set", dta.Count);
         Console.WriteLine("{0} rows in Categories table", myDataSet.Tables["ADMIN.DEAN_SVS_GROUPS"].Rows.Count);
         Console.WriteLine("{0} columns in Categories table", myDataSet.Tables["ADMIN.DEAN_SVS_GROUPS"].Columns.Count);
         DataColumnCollection drc = myDataSet.Tables["ADMIN.DEAN_SVS_GROUPS"].Columns;
         int i =  0 ;
         foreach (DataColumn dc in drc)
         {
            Console.WriteLine("Column name[{0}] is {1}, of type {2}",i++ , dc.ColumnName, dc.DataType);
         }
         DataRowCollection dra = myDataSet.Tables["ADMIN.DEAN_SVS_GROUPS"].Rows;
         foreach (DataRow dr in dra)
         {
            Console.WriteLine("CategoryName[{0}] is {1}", dr[ 0 ], dr[ 9 ]);
         }
      }
      catch (Exception e)
      {
         Console.WriteLine("Oooops.  Caught an exception:\n{0}", e.Message);
      }
   }

Мнения? Коментарии?
С уважением _svs
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Поделитесь опытом связь клиентского ПО с СУБД / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]