大部分專案在驗收時都需要向客戶提供乙份詳細的資料字典,而編寫資料字典是一件既耗時又耗力的事情。為了解決這個問題,提高工作效率,本人寫了乙個工具類。該工具類能夠根據現有的資料庫快速的生成對應的資料字典,它可以為我們完成80%的工作量,我們只需要做剩下的20%的工作就可以了。該工具類目前支援oracle、sqlserver資料庫,操作簡單,快捷。
1、以下是部分關鍵**:
public class metadatautil
private string gettableprimarykeys(string tablename)
rs.close();
return sb.tostring();
}catch(exception ex) }
private boolean containfieldtype(string fieldtype)
/*** 取得表的備註資訊
*/private mapgettablecomments()throws exception
rs.close();
pstm.close();
return colmap; }
/*** 取得表字段的備註資訊
*/private mapgetcolumncomments(string tablename)throws exception
rs.close();
pstm.close();
return colmap; }
public void createtablemetadata(string filename)
file file = new file(filename);
//delete old file
if(file.exists() && file.isfile()) file.delete();
//create sheet
fileoutputstream out = new fileoutputstream(file);
writableworkbook book = workbook.createworkbook(out);
writablesheet sheet = book.createsheet("資料字典",0);
//表備註
maptablemap = gettablecomments();
databasemetadata dbmd = cn.getmetadata();
string types = ;
resultset rs = dbmd.gettables(catalog ,schemapattern, null, types);
int rowindex = 0;
int tablecount = 0;
while(rs.next())else
//表名
sheet.mergecells(0,rowindex,6,rowindex); //合併單元格,6數字要與表頭的cell個數一致
sheet.addcell(new label(0,rowindex,tablename + tablecomment));
rowindex++;
//表頭
sheet.addcell(new label(0,rowindex,"序號"));
sheet.addcell(new label(1,rowindex,"欄位名"));
sheet.addcell(new label(2,rowindex,"字段描述"));
sheet.addcell(new label(3,rowindex,"字段型別"));
sheet.addcell(new label(4,rowindex,"主鍵"));
sheet.addcell(new label(5,rowindex,"可空"));
sheet.addcell(new label(6,rowindex,"備註"));
rowindex++;
//主鍵
string strprimarykeys = gettableprimarykeys(tablename);
statement stm = cn.createstatement();
stm.setmaxrows(1);
resultset rscolumn = stm.executequery("select * from " + tablename);
resultsetmetadata rsmd = rscolumn.getmetadata();
int recordindex = 1;
for(int i=1;i<=rsmd.getcolumncount();i++)
sheet.addcell(new label(3,rowindex,fieldtype));
//是否主鍵
if(strprimarykeys.indexof("," + rsmd.getcolumnname(i) + ",") != -1)else
//是否可空
sheet.addcell(new label(5,rowindex,(rsmd.isnullable(i)==1)?"":"n"));
//備註
sheet.addcell(new label(6,rowindex,""));
rowindex++;
recordindex++;
}rowindex += 2;
rscolumn.close();
stm.close();
}catch(exception e)
}rs.close();
book.write();
book.close();
}catch(exception ex)finallycatch(exception e)
} }public static void main(string args) catch(exception ex) }
}
Django 匯入現有資料庫
inspectdb 工具自省你配置檔案指向的 資料庫 針對每乙個表生成乙個django模型,然後將這些 python 模型的 顯示在系統的標準輸出裡面。配置好資料庫之後,執行如下命令 很強大,可以省去不少功夫,而且這也比較符合我一貫的邏輯,但是資料庫的反向工程總是不會那麼的盡如人意的 1.如果資料表...
用 Django 管理現有資料庫
在多數專案中,總有一些幾乎一成不變的 crud 操作,編寫這些 很無聊,但又是整個系統必不可少的功能之一。我們在上乙個專案中也面臨類似的問題,雖然已經實現了乙個功能相對完整的管理後台,也盡量做到了 復用,但隨著專案規模的增長,需要編寫的樣本 也不斷膨脹,占用了大量開發時間。面對這種局面,我自然想到了...
Android 載入現有資料庫檔案
想把乙個資料庫db檔案放在 res raw 目錄下,安裝應用的時候就直接載入這個db檔案到程式預設資料庫目錄下 data data package name databases db name,這樣就不用每次安裝的時候都用sql語句建立新的資料庫。下面的 就是將 res raw 目錄下的.db資料庫...