1.已知Oracle数据库的某张表,现在要将这张表的数据导出到某个DBF文件中,但不知道数据的列和dbf文件的列名是否一致,所以做了个小程序进行比较。
需要了解的小知识点:
如何查出Oracle中Table的列名:select column_name from user_tab_cols where table_name='TABLE OR VIEW NAME'
注意:这里的表名或视图名称必须大写
2.功能简介
分别查出列名显示在GridView中,显示table和DBF文件相同和不同的列名及他们的个数
3.代码详解
List dbfcolumnName = new List();
List viewcolumnName = new List();
private void BTNCompare_Click(object sender, EventArgs e)
{
int same = 0, view = 0, dbf = 0;
StringBuilder diffviewcolumnName = new StringBuilder();
StringBuilder diffdbfcolumnName = new StringBuilder();
StringBuilder samecolumnName = new StringBuilder();
for(int i= 0;i< viewcolumnName.Count;i++)
{
bool panduan = false;
for (int j= 0;j
/// 查询DBF文件的字段并显示
///
public void SelectDBFField()
{
FileInfo fi = new FileInfo(@"D:\DBF\mm.dbf");
//FileInfo fi = new FileInfo(@"D:\DBF\mm.dbf");
string mulu = fi.DirectoryName;
string connstring = string.Format("Provider = Microsoft.Jet.OLEDB.4.0 ;Data Source ={0};Extended Properties=dBASE IV;", @"D:\DBF");
var Connection = new OleDbConnection(connstring);
OleDbCommand dc = new OleDbCommand("select * from mm.dbf", Connection);
DataSet ds = new DataSet();
OleDbDataAdapter da = new OleDbDataAdapter();
da.SelectCommand = dc;
da.Fill(ds);
DataTable ColumnList = new DataTable();
ColumnList.Columns.Add();
ColumnList.Columns["COLUMN1"].ColumnName = "COLUMN_NAME";
foreach (DataColumn dcolum in ds.Tables[0].Columns)
{
ColumnList.Rows.Add(dcolum.ColumnName);
}
this.DGVDBField.DataSource = ColumnList;
foreach (DataRow dr in ColumnList.Rows)
{
dbfcolumnName.Add(dr["COLUMN_NAME"].ToString());
}
}
private void BTSelect_Click(object sender, EventArgs e)
{
SelectDBFField();
SelectViewField();
}
4.运行结果