對數據庫表及字段的查詢添加

對數據庫表及字段的查詢添加
if OpenDialog1.Execute then
  begin
    Edit1.Text := OpenDialog1.FileName;
    ADOConnection1.Close;
    ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='
      + Edit1.Text + ';Persist Security Info=False';
    ADOConnection1.Open;
    ADOConnection1.GetTableNames(ComboBox1.Items);
    ComboBox1.ItemIndex := 0;
  end;
若是你是用ADO的話
ADOConnection1.GetTableNames();得到表的列表
ADOConnection1.GetFieldNames();得到某個表的字段列表
TADOConnection 鏈接後,
ADOConnection1.DataSetCount 爲表的個數
ADOConnection1.DataSets[i].Name表名
   如:
ADOConnection1.GetTableNames(ComboBox1.Items, False);
//該函數會把表名列在ComboBox1.Items中.
有表名獲取字段名,把字段名列在中
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
if ComboBox1.Text<>'' then
begin
ADOConnection1.GetFieldNames(ComboBox1.Text,listbox.Items);
end;
end;
  可是在測試發現字段名默認都自動排序了,如要取消能夠 fieldlist.Sorted := False;
 
「動態添加一個數據庫字段」是數據庫SQL自己的事,與Delphi關係不大。
ADOCommand1.CommandText := 'alter table 表名 add 字段名1 varchar(12),字段名2 integer,字段3 datetime';
ADOCommand1.Execute;
adoquery1.sql.add('alter table 表名 add 字段名1 varchar(12),字段名2 integer,字段3 datetime');
 
 
經過ADO.QUERY鏈接數據庫···而後用SQL語句查詢就能夠了
獲取當前數據庫中的全部用戶表個數
select count(*) from sysobjects where xtype='U' and category=0
獲取當前數據庫中的全部用戶表表名
select name from sysobjects where xtype='U' and category=0
 
sysobjects 系統對象表
XTYPExtype char(2) 對象類型。
能夠是下列對象類型中的一種:
C = CHECK 約束
D = 默認值或 DEFAULT 約束
F = FOREIGN KEY 約束
L = 日誌
FN = 標量函數
IF = 內嵌表函數
P = 存儲過程
PK = PRIMARY KEY 約束(類型是 K)
RF = 複製篩選存儲過程
S = 系統表
TF = 表函數
TR = 觸發器
U = 用戶表
UQ = UNIQUE 約束(類型是 K)
V = 視圖
X = 擴展存儲過程
category int 用於發佈、約束和標識。  
 
  //在列表框中添加數據集中的全部字段
 procedure TForm1.FillFields; var   i:Integer; begin   //清空列表框   ListBoxField.Items.Clear;   for i:=0 to ADOQuery1.FieldCount-1 do     begin       ListBoxField.Items.Add(ADOQuery1.Fields[i].DisplayName);     end;   ListBoxField2.Items:=ListBoxField.Items;   //確保ListBox中選項被選中   ListBoxField.Selected[0]:=true;   ListBoxField2.Selected[0]:=true; end;//獲取查詢條件
function TForm1.GetSearchOpition: TLocateOptions;
var
  SearchOpition:TLocateOptions;
begin
  if CheckBox1.Checked then
    SearchOpition:=SearchOpition+[loPartialKey];
  if CheckBox2.Checked then
    SearchOpition:=SearchOpition+[loCaseInsensitive];
  Result:=SearchOpition;
end;
procedure TForm1.ButtonSearchClick(Sender: TObject);
begin   with ADOQuery1 do begin     //開始執行查詢    
if Locate(ListBoxField.Items[ListBoxField.ItemIndex]+';'+ListBoxField2.Items[ListBoxField2.ItemIndex],VarArrayOf([Edit1.Text,Edit2.Text]),GetSearchOpition)=false then       ShowMessage('沒有查詢到符合條件的記錄');  
end; end;    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;   DataCol: Integer; Column: TColumn; State: TGridDrawState); begin   if gdSelected in State then//若是是當前區域是被選擇區域     begin       //設置被選擇區域的背景色       TDBGrid(sender).Canvas.Brush.Color := clInfoBk  ;       //設置被選擇區域的文字顏色       TDBGrid(sender).Canvas.Font.Color:= clFuchsia  ;     end   else //若是是當前區域不是被選擇區域     begin       //若是是偶數行,則背景色爲clSkyBlue       if ADOQuery1.RecNo mod 2 = 0 then         TDBGrid(sender).Canvas.Brush.Color := clSkyBlue       else //若是是奇數行,則背景色爲clInactiveCaptionText         TDBGrid(sender).Canvas.Brush.Color := clInactiveCaptionText;     end;   //調用默認的繪圖函數   TDBGrid(sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);   with TDBGrid(sender).Canvas do     begin       //設置表格橫線的顏色       Pen.Color := clPurple  ;       MoveTo(Rect.Left, Rect.Bottom);       //畫表格橫線       LineTo(Rect.Right, Rect.Bottom);       //設置表格豎線的顏色       Pen.Color := clNavy;       MoveTo(Rect.Right, Rect.Top);       //畫表格豎線       LineTo(Rect.Right, Rect.Bottom);     end; end  
相關文章
相關標籤/搜索