//與資料庫結構有關的一些函式
//1、動態改變欄位名稱
uses comobj;
//access
//tablename: 表名; oldcolname: 原欄位名; newcolname: 新欄位名;
procedure renamefield(const tablename, oldcolname, newcolname: string);
vardb, col: olevariant;
begin
db := createoleobject('adox.catalog');
db.activeconnection := adoconnection1.connectionobject;
col := createoleobject('adox.column');
col := db.tables[tablename].columns[oldcolname];
col.name := newcolname;
end;
//sqlserver
procedure renamefield(const tablename, oldcolname, newcolname: string);
begin
with adocommand1 do
begin
commandtext := 'exec sp_rename ''' + tablename + '.' + oldcolname +
''',''' + newcolname + ''',''column'';';
excute;
end;
end;
2、取得 access 庫中的表結構
type
ttabledef = record
name,
datecreated,
lastupdated,
description: string;
end;
ttabledefs = array of ttabledef;
procedure gettabledefs(const dbname: string; out tabledefs: ttabledefs);
vardbengine, db: olevariant;
i: longint;
begin
trydbengine := createoleobject('dao.dbengine.36');
db := dbengine.opendatabase(dbname);
setlength(tabledefs, longint(db.tabledefs.count));
for i := low(tabledefs) to high(tabledefs) do
begin
tabledefs[i].name := db.tabledefs[i].name;
tabledefs[i].datecreated := db.tabledefs[i].datecreated;
tabledefs[i].lastupdated := db.tabledefs[i].lastupdated;
trytabledefs[i].description := db.tabledefs[i].properties['description'].value;
except
tabledefs[i].description := '';
end;
end;
finally
db := unassigned;
dbengine := unassigned;
end;
end;
3、取得 access 表中的字段結構
type
tfielddef = record
name: string;
types,
size: longint;
description: string;
end;
tfielddefs = array of tfielddef;
procedure getfielddefs(const dbname, tablename: string; out fielddefs: tfielddefs);
vardbengine, db: olevariant;
i: longint;
begin
trydbengine := createoleobject('dao.dbengine.36');
db := dbengine.opendatabase(dbname);
setlength(fielddefs, longint(db.tabledefs[tablename].fields.count));
for i := low(fielddefs) to high(fielddefs) do
begin
fielddefs[i].name := db.tabledefs[tablename].fields[i].name;
fielddefs[i].types := db.tabledefs[tablename].fields[i].type;
fielddefs[i].size := db.tabledefs[tablename].fields[i].size;
tryfielddefs[i].description := db.tabledefs[tablename].fields[i].properties['description'].value;
except
fielddefs[i].description := '';
end;
end;
finally
db := unassigned;
dbengine := unassigned;
end;
end;
Access 資料庫與sql資料庫資料型別的比較
下表比較了 microsoft access 資料庫 microsoft access 資料庫 資料和物件 如表 查詢或窗體 組成的集合,與特定的主題或用途有關。microsoft jet 資料庫引擎用於管理資料。和 microsoft access 專案 microsoft access 專案 與...
ACCESS資料庫的注入
access資料庫的注入access資料庫的注入與mssql不同,要得到表名,字段,以及欄位的內容不能用mssql 暴 的方法直接得 到,access只能用猜解出表名和字段,然後再猜解出字段的長度,最後把字段的內容從第一位到第n位乙個個猜 解出來,採用的猜解方法類似玩乙個遊戲猜大小,比如乙個數字,猜...
連線ACCESS資料庫
1 匯入命名空間空間 system.data.oledb 2 建立指向資料庫的連線 建立連線要用到system.data.oledb命名空間中的類 oledbconnection。通過以下語句可以完成對本地資料庫的連線工作 string strconnect provider microsoft.j...