通过OleDB连接方式,访问Access,Excel数据库.
生活随笔
收集整理的這篇文章主要介紹了
通过OleDB连接方式,访问Access,Excel数据库.
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
通過OleDB連接方式,訪問Access,Excel數據庫. OleDbConnectionStringBuilder?oleConStr?=?new?OleDbConnectionStringBuilder();
Access?連接信息
oleConStr.ConnectionString?=?"Provider=Microsoft.Jet.OLEDB.4.0;Data?Source="?+?myDBFileName?+
??????????????????????????????????";User?Id=admin;Password=;";
Excel?連接信息
string?myExcelConStr?=?"Provider=Microsoft.Jet.OLEDB.4.0;Data?Source="?+?myDBFileName?+?";Extended?Properties=Excel?8.0;";
???????
????????myExcelConStr?=
????????????????@"Provider=Microsoft.Jet.OLEDB.4.0;"?+
????????????????@"Data?Source="?+?myDBFileName?+?";"?+
????????????????@"Extended?Properties="?+?Convert.ToChar(34).ToString()?+
????????????????@"Excel?8.0;"?+?ExcelConnectionOptions()?+?Convert.ToChar(34).ToString();
????????public?bool?Headers
????????{
????????????get?{?return?HasHeaders;?}
????????????set?{?HasHeaders?=?value;?}
????????}
????????public?bool?MixedData
????????{
????????????get?{?return?IsMixedData;?}
????????????set?{?IsMixedData?=?value;?}
????????}
????????private?string?ExcelConnectionOptions()
????????{
????????????string?strOpts?=?"";
????????????if?(this.MixedData?==?true)
????????????????strOpts?+=?"Imex=2;";
????????????if?(this.Headers?==?true)
????????????????strOpts?+=?"HDR=Yes;";
????????????else
????????????????strOpts?+=?"HDR=No;";
????????????return?strOpts;
????????}
=======查詢數據===========
?OleDbConnection?OleConn?=?new?OleDbConnection(oleConStr.ConnectionString);
???????OleDbCommand?cmd;
???????string?SqlStr?=?"??Select?top?1?*??from?["?+?newMaTolName?+?"]?";
???????cmd?=?new?OleDbCommand(SqlStr,?OleConn);
???????OleDbDataAdapter?OleDapt?=?new?OleDbDataAdapter();
???????OleDapt.SelectCommand?=?cmd;
???????OleConn.Open();
???????DataSet?myDS?=?new?DataSet();
???????OleDapt.Fill(myDS);
注意:如果是Excel數據庫需在表名后加"$";
=======增加字段===========
SqlStr?=?"??ALTER?TABLE??["?+?newMaTolName.Replace("$","")?+?"]???ADD?IsRead?decimal,RowNo?long?IDENTITY(1,1)??";
cmd?=?new?OleDbCommand(SqlStr,?OleConn);
int?affectRows?=?cmd.ExecuteNonQuery();
=======在DataSet表中增加一列=======
myDS?是已保存有數據的DataSet
if?(myDS.Tables[0].Rows.Count?<?1)
????????????????{
????????????????????return?IsSuccess;
????????????????}
????????????????DataTable?dt?=?myDS.Tables[0];
????????????????DataColumn?dc?=?new?DataColumn();
????????????????dc.DataType?=?Type.GetType("System.String");
????????????????dc.DefaultValue?=?1;
????????????????dc.ColumnName?=?"MaTolName";
????????????????dt.Columns.Add(dc);
????????????????//給該列賦值???
????????????????for?(int?i?=?0;?i?<?dt.Rows.Count;?i++)
????????????????{
????????????????????dt.Rows[i]["MaTolName"]?=?myMaTolName;
????????????????}
????????????????dt.DataSet.AcceptChanges();
=======獲取數據源的框架信息,如其中的表名等.==============
System.Data.DataTable?dt=?OleConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,?null);
=======獲取與更新?DataGrid中的數據改變,并更新數據源.==========================
DataTable?dtChanges?=?dt.GetChanges();
OleDbCommand?oleCmd;
OleDbDataAdapter?oleda?=?new?OleDbDataAdapter(oleCmd);?????
oleda.InsertCommand?=?new?OleDbCommand(strInsert,oleConn);
oleda.UpdateCommand?=?new?OleDbCommand(strUpdate,oleConn);?
oleAdapter.Update(dtChanges);?
????????private?void?CreateNewTable()
????????{
???????????
????????????System.Data.DataTable?table?=?new?DataTable("Student");
??
????????????DataColumn?column;
????????????DataRow?row;
?????????
????????????column?=?new?DataColumn();
????????????column.DataType?=?System.Type.GetType("System.Int32");
????????????column.ColumnName?=?"SID";
????????????column.AutoIncrement?=?true;
????????????column.ReadOnly?=?false;
????????????column.Unique?=?true;???????
????????????table.Columns.Add(column);
??????????
????????????column?=?new?DataColumn();
????????????column.DataType?=?System.Type.GetType("System.String");
????????????column.ColumnName?=?"Name";
????????????column.AutoIncrement?=?false;
????????????column.Caption?=?"Name";
????????????column.ReadOnly?=?false;
????????????column.DefaultValue?=?"myName";
????????????column.Unique?=?false;
????????????table.Columns.Add(column);
????????????//設置表的主鍵
????????????DataColumn[]?PrimaryKeyColumns?=?new?DataColumn[1];
????????????PrimaryKeyColumns[0]?=?table.Columns["SID"];
????????????table.PrimaryKey?=?PrimaryKeyColumns;
????????????table.AcceptChanges();
???????????
????????????DataSet??dataSet?=?new?DataSet();
????????????dataSet.Tables.Add(table);
????????
????????????for?(int?i?=?0;?i?<=?2;?i++)
????????????{
????????????????row?=?table.NewRow();
????????????????//row["SID"]?=?i;
????????????????//row["Name"]?=?"name?"?+?i;
????????????????table.Rows.Add(row);
????????????}
????????????dataSet.AcceptChanges();
????????????this.dataGrid1.DataSource?=?dataSet.Tables[0];
????????}
=======表的復制=========
//創建新表dataTableDest
DataTable?dataTableDest?=?new?DataTable();?
//將表dataTableSource的結構復制到新表dataTableDest中
dataTableDest?=?dataTableSource.Clone();?
//然后再復制數據到新表中
foreach(DataRow?dr?in?dataTableSource.Rows)?
{?
//使用ImportRow()方法復制數據。若用dataTableDest.Rows.Add(dr)將會出錯:System.ArgumentException:?該行已經屬于另一個表。????????????
dataTableDest.ImportRow(dr);?
}
直接用下面的方法就行了
dataTableDest?=?dataTableSource.Copy();
========創建表=================
????????DataTable?dt?=?new?DataTable("TableName");
//增加列
????????dt.Columns.Add("column0",?System.Type.GetType("System.String"));
????????dt.Columns.Add(new?DataColumn("IsChild",?typeof(bool)));
????????DataColumn?dc?=?new?DataColumn("column1",?System.Type.GetType("System.Boolean"));
????????dt.Columns.Add(dc);
//增加行
????????DataRow?dr?=?dt.NewRow();
????????dr["column0"]?=?"Good";
????????dr["column1"]?=?true;
????????dt.Rows.Add(dr);
????????//Doesn't?initialize?the?row
????????DataRow?dr1?=?dt.NewRow();
????????dt.Rows.Add(dr1);
//選擇行
????????//Search?the?second?row?如果沒有賦值,則用is?null來select
????????DataRow[]?drs?=?dt.Select("column1?is?null");
????????DataRow[]?drss?=?dt.Select("column0?=?'Good'");
//復制表包括數據
????????DataTable?dtNew?=?dt.Copy();
//只復制表的架構
????????DataTable?dtOnlyScheme?=?dt.Clone();
//增加行并賦值
????????//Method?1
????????DataRow?droperate?=?dt.Rows[0];
????????droperate["column0"]?=?"AXzhz";
????????droperate["column1"]?=?false;
????????//Method?2
????????droperate[0]?=?"AXzhz";
????????droperate[1]?=?false;
????????//Method?3
????????dt.Rows[0]["column0"]?=?"AXzhz";
????????dt.Rows[0]["column1"]?=?false;
????????//Method?4
????????dt.Rows[0][0]?=?"AXzhz";
????????dt.Rows[0][1]?=?false;
????????dtOnlyScheme.Rows.Add(dt.Rows[0].ItemArray);
//獲取行的狀態
????????if?(dt.Rows[0].RowState?==?DataRowState.Unchanged)
????????{
??????????
????????}
//將表轉換成xml數據流形式
????????System.IO.TextWriter?tw?=?new?System.IO.StringWriter();
????????????//if?TableName?is?empty,?WriteXml()?will?throw?Exception.
????????????dtNeedCoveret.TableName=dtNeedCoveret.TableName.Length==0?"Table_AX":dtNeedCoveret.TableName;
????????????dtNeedCoveret.WriteXml(tw);
????????????dtNeedCoveret.WriteXmlSchema(tw);
????????System.IO.TextReader?trDataTable?=?new?System.IO.StringReader(xml.Substring(0,?xml.IndexOf("<?xml")));
????????????System.IO.TextReader?trSchema?=?new?System.IO.StringReader(xml.Substring(xml.IndexOf("<?xml")));
????????????DataTable?dtReturn?=?new?DataTable();
????????????dtReturn.ReadXmlSchema(trSchema);
????????????dtReturn.ReadXml(trDataTable);
//對表中的數據進行篩選
????????//It's?so?strange?that?the?second?row?has?been?filtered
????????//the?second?row?show?in?GridView?never
????????//It?means?null?field?will?be?filter?always.
????????//Filter?the?all?conditions
????????dt.DefaultView.RowFilter?=?"column1?<>?true";
????????//dt.DefaultView.RowFilter?=?"column1?=?true";
????????dt.DefaultView.RowStateFilter?=?DataViewRowState.Added;
//對表的數據排序
????????//Stupid?method
????????DataRow[]?drsss?=?dt.Select(String.Empty,?"column0?DESC?,?column1?ASC");
????????//Clever?method
????????dt.DefaultView.Sort?=?"column0?,?column1?ASC";?????
????????dt.DefaultView.Sort?=?"ID?,Name?ASC";
????????dt=dt.DefaultView.ToTable();
//表的合并
????????//兩個結構相同的DT合并
????????/**////?<summary>
????????///?將兩個列不同的DataTable合并成一個新的DataTable
????????///?</summary>
????????///?<param?name="dt1">表1</param>
????????///?<param?name="dt2">表2</param>
????????///?<returns>合并過的新表</returns>
????????private?DataTable?UnionSameDataTable(DataTable?dt1,?DataTable?dt2)
????????{
????????????DataTable?dt3?=?dt1.Clone();
????????????object[]?obj?=?new?object[dt3.Columns.Count];
????????????for?(int?i?=?0;?i?<?dt1.Rows.Count;?i++)
????????????{
????????????????dt1.Rows[i].ItemArray.CopyTo(obj,?0);
????????????????dt3.Rows.Add(obj);
????????????}
????????????for?(int?i?=?0;?i?<?dt2.Rows.Count;?i++)
????????????{
????????????????dt2.Rows[i].ItemArray.CopyTo(obj,?0);
????????????????dt3.Rows.Add(obj);
????????????}
????????????return?dt3;
????????}
????????//兩個結構不同的DT合并
????????/**////?<summary>
????????///?將兩個列不同的DataTable合并成一個新的DataTable
????????///?</summary>
????????///?<param?name="dt1">表1</param>
????????///?<param?name="dt2">表2</param>
????????///?<returns>合并過的新表</returns>
????????private?DataTable?UniteDataTable(DataTable?dt1,?DataTable?dt2)
????????{
????????????DataTable?dt3?=?dt1.Clone();
????????????for?(int?i?=?0;?i?<?dt2.Columns.Count;?i++)
????????????{
????????????????dt3.Columns.Add(dt2.Columns[i].ColumnName);
????????????}
????????????object[]?obj?=?new?object[dt3.Columns.Count];
????????????for?(int?i?=?0;?i?<?dt1.Rows.Count;?i++)
????????????{
????????????????dt1.Rows[i].ItemArray.CopyTo(obj,?0);
????????????????dt3.Rows.Add(obj);
????????????}
????????????if?(dt1.Rows.Count?>=?dt2.Rows.Count)
????????????{
????????????????for?(int?i?=?0;?i?<?dt2.Rows.Count;?i++)
????????????????{
????????????????????for?(int?j?=?0;?j?<?dt2.Columns.Count;?j++)
????????????????????{
????????????????????????dt3.Rows[i][j?+?dt1.Columns.Count]?=?dt2.Rows[i][j].ToString();
????????????????????}
????????????????}
????????????}
????????????else
????????????{
????????????????DataRow?dr3;
????????????????for?(int?i?=?0;?i?<?dt2.Rows.Count?-?dt1.Rows.Count;?i++)
????????????????{
????????????????????dr3?=?dt3.NewRow();
????????????????????dt3.Rows.Add(dr3);
????????????????}
????????????????for?(int?i?=?0;?i?<?dt2.Rows.Count;?i++)
????????????????{
????????????????????for?(int?j?=?0;?j?<?dt2.Columns.Count;?j++)
????????????????????{
????????????????????????dt3.Rows[i][j?+?dt1.Columns.Count]?=?dt2.Rows[i][j].ToString();
????????????????????}
????????????????}
????????????}
????????????return?dt3;
????????}
????????//多個?結構相同的DataTable合并
????????public?DataTable?GetAllEntrysDataTable()
????????{
????????????DataTable?newDataTable?=?GetEntrysDataTable(0).Clone();
????????????object[]?obj?=?new?object[newDataTable.Columns.Count];
????????????for?(int?i?=?0;?i?<?entryGroups.GetEntryGroupCount();?i++)
????????????{
????????????????for?(int?j?=?0;?j?<?GetEntrysDataTable(i).Rows.Count;?j++)
????????????????{
????????????????????GetEntrysDataTable(i).Rows[j].ItemArray.CopyTo(obj,?0);
????????????????????newDataTable.Rows.Add(obj);
????????????????}
????????????}
????????????return?newDataTable;
????????}
//執行DataTable中的查詢返回新的DataTable
????????//方法一
????????/**////?<summary>
????????///?執行DataTable中的查詢返回新的DataTable
????????///?</summary>
????????///?<param?name="dt">源數據DataTable</param>
????????///?<param?name="condition">查詢條件</param>
????????///?<returns></returns>
????????private?DataTable?GetNewDataTable(DataTable?dt,?string?condition)
????????{
????????????DataTable?newdt?=?new?DataTable();
????????????newdt?=?dt.Clone();
????????????DataRow[]?dr?=?dt.Select(condition);
????????????for?(int?i?=?0;?i?<?dr.Length;?i++)
????????????{
????????????????newdt.ImportRow((DataRow)dr[i]);
????????????}
????????????return?newdt;//返回的查詢結果
????????}
????????//方法二
????????/**////?<summary>
????????///?執行DataTable中的查詢返回新的DataTable
????????///?</summary>
????????///?<param?name="dt">源數據DataTable</param>
????????///?<param?name="condition">查詢條件</param>
????????///?<returns></returns>
????????private?DataTable?GetNewDataTable(DataTable?dt,?string?condition)
????????{
????????????DataTable?newdt?=?new?DataTable();
????????????newdt?=?dt.Clone();
????????????DataRow[]?rows?=?dt.Select(condition);
????????????foreach?(DataRow?row?in?rows)
????????????{
????????????????newdt.Rows.Add(row.ItemArray);
????????????}
????????????return?newdt;
????????}
posted on 2008-02-15 18:13 DotNet編程 閱讀(...) 評論(...) 編輯 收藏
Access?連接信息
oleConStr.ConnectionString?=?"Provider=Microsoft.Jet.OLEDB.4.0;Data?Source="?+?myDBFileName?+
??????????????????????????????????";User?Id=admin;Password=;";
Excel?連接信息
string?myExcelConStr?=?"Provider=Microsoft.Jet.OLEDB.4.0;Data?Source="?+?myDBFileName?+?";Extended?Properties=Excel?8.0;";
???????
????????myExcelConStr?=
????????????????@"Provider=Microsoft.Jet.OLEDB.4.0;"?+
????????????????@"Data?Source="?+?myDBFileName?+?";"?+
????????????????@"Extended?Properties="?+?Convert.ToChar(34).ToString()?+
????????????????@"Excel?8.0;"?+?ExcelConnectionOptions()?+?Convert.ToChar(34).ToString();
????????public?bool?Headers
????????{
????????????get?{?return?HasHeaders;?}
????????????set?{?HasHeaders?=?value;?}
????????}
????????public?bool?MixedData
????????{
????????????get?{?return?IsMixedData;?}
????????????set?{?IsMixedData?=?value;?}
????????}
????????private?string?ExcelConnectionOptions()
????????{
????????????string?strOpts?=?"";
????????????if?(this.MixedData?==?true)
????????????????strOpts?+=?"Imex=2;";
????????????if?(this.Headers?==?true)
????????????????strOpts?+=?"HDR=Yes;";
????????????else
????????????????strOpts?+=?"HDR=No;";
????????????return?strOpts;
????????}
=======查詢數據===========
?OleDbConnection?OleConn?=?new?OleDbConnection(oleConStr.ConnectionString);
???????OleDbCommand?cmd;
???????string?SqlStr?=?"??Select?top?1?*??from?["?+?newMaTolName?+?"]?";
???????cmd?=?new?OleDbCommand(SqlStr,?OleConn);
???????OleDbDataAdapter?OleDapt?=?new?OleDbDataAdapter();
???????OleDapt.SelectCommand?=?cmd;
???????OleConn.Open();
???????DataSet?myDS?=?new?DataSet();
???????OleDapt.Fill(myDS);
注意:如果是Excel數據庫需在表名后加"$";
=======增加字段===========
SqlStr?=?"??ALTER?TABLE??["?+?newMaTolName.Replace("$","")?+?"]???ADD?IsRead?decimal,RowNo?long?IDENTITY(1,1)??";
cmd?=?new?OleDbCommand(SqlStr,?OleConn);
int?affectRows?=?cmd.ExecuteNonQuery();
=======在DataSet表中增加一列=======
myDS?是已保存有數據的DataSet
if?(myDS.Tables[0].Rows.Count?<?1)
????????????????{
????????????????????return?IsSuccess;
????????????????}
????????????????DataTable?dt?=?myDS.Tables[0];
????????????????DataColumn?dc?=?new?DataColumn();
????????????????dc.DataType?=?Type.GetType("System.String");
????????????????dc.DefaultValue?=?1;
????????????????dc.ColumnName?=?"MaTolName";
????????????????dt.Columns.Add(dc);
????????????????//給該列賦值???
????????????????for?(int?i?=?0;?i?<?dt.Rows.Count;?i++)
????????????????{
????????????????????dt.Rows[i]["MaTolName"]?=?myMaTolName;
????????????????}
????????????????dt.DataSet.AcceptChanges();
=======獲取數據源的框架信息,如其中的表名等.==============
System.Data.DataTable?dt=?OleConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,?null);
=======獲取與更新?DataGrid中的數據改變,并更新數據源.==========================
DataTable?dtChanges?=?dt.GetChanges();
OleDbCommand?oleCmd;
OleDbDataAdapter?oleda?=?new?OleDbDataAdapter(oleCmd);?????
oleda.InsertCommand?=?new?OleDbCommand(strInsert,oleConn);
oleda.UpdateCommand?=?new?OleDbCommand(strUpdate,oleConn);?
oleAdapter.Update(dtChanges);?
????????private?void?CreateNewTable()
????????{
???????????
????????????System.Data.DataTable?table?=?new?DataTable("Student");
??
????????????DataColumn?column;
????????????DataRow?row;
?????????
????????????column?=?new?DataColumn();
????????????column.DataType?=?System.Type.GetType("System.Int32");
????????????column.ColumnName?=?"SID";
????????????column.AutoIncrement?=?true;
????????????column.ReadOnly?=?false;
????????????column.Unique?=?true;???????
????????????table.Columns.Add(column);
??????????
????????????column?=?new?DataColumn();
????????????column.DataType?=?System.Type.GetType("System.String");
????????????column.ColumnName?=?"Name";
????????????column.AutoIncrement?=?false;
????????????column.Caption?=?"Name";
????????????column.ReadOnly?=?false;
????????????column.DefaultValue?=?"myName";
????????????column.Unique?=?false;
????????????table.Columns.Add(column);
????????????//設置表的主鍵
????????????DataColumn[]?PrimaryKeyColumns?=?new?DataColumn[1];
????????????PrimaryKeyColumns[0]?=?table.Columns["SID"];
????????????table.PrimaryKey?=?PrimaryKeyColumns;
????????????table.AcceptChanges();
???????????
????????????DataSet??dataSet?=?new?DataSet();
????????????dataSet.Tables.Add(table);
????????
????????????for?(int?i?=?0;?i?<=?2;?i++)
????????????{
????????????????row?=?table.NewRow();
????????????????//row["SID"]?=?i;
????????????????//row["Name"]?=?"name?"?+?i;
????????????????table.Rows.Add(row);
????????????}
????????????dataSet.AcceptChanges();
????????????this.dataGrid1.DataSource?=?dataSet.Tables[0];
????????}
=======表的復制=========
//創建新表dataTableDest
DataTable?dataTableDest?=?new?DataTable();?
//將表dataTableSource的結構復制到新表dataTableDest中
dataTableDest?=?dataTableSource.Clone();?
//然后再復制數據到新表中
foreach(DataRow?dr?in?dataTableSource.Rows)?
{?
//使用ImportRow()方法復制數據。若用dataTableDest.Rows.Add(dr)將會出錯:System.ArgumentException:?該行已經屬于另一個表。????????????
dataTableDest.ImportRow(dr);?
}
直接用下面的方法就行了
dataTableDest?=?dataTableSource.Copy();
========創建表=================
????????DataTable?dt?=?new?DataTable("TableName");
//增加列
????????dt.Columns.Add("column0",?System.Type.GetType("System.String"));
????????dt.Columns.Add(new?DataColumn("IsChild",?typeof(bool)));
????????DataColumn?dc?=?new?DataColumn("column1",?System.Type.GetType("System.Boolean"));
????????dt.Columns.Add(dc);
//增加行
????????DataRow?dr?=?dt.NewRow();
????????dr["column0"]?=?"Good";
????????dr["column1"]?=?true;
????????dt.Rows.Add(dr);
????????//Doesn't?initialize?the?row
????????DataRow?dr1?=?dt.NewRow();
????????dt.Rows.Add(dr1);
//選擇行
????????//Search?the?second?row?如果沒有賦值,則用is?null來select
????????DataRow[]?drs?=?dt.Select("column1?is?null");
????????DataRow[]?drss?=?dt.Select("column0?=?'Good'");
//復制表包括數據
????????DataTable?dtNew?=?dt.Copy();
//只復制表的架構
????????DataTable?dtOnlyScheme?=?dt.Clone();
//增加行并賦值
????????//Method?1
????????DataRow?droperate?=?dt.Rows[0];
????????droperate["column0"]?=?"AXzhz";
????????droperate["column1"]?=?false;
????????//Method?2
????????droperate[0]?=?"AXzhz";
????????droperate[1]?=?false;
????????//Method?3
????????dt.Rows[0]["column0"]?=?"AXzhz";
????????dt.Rows[0]["column1"]?=?false;
????????//Method?4
????????dt.Rows[0][0]?=?"AXzhz";
????????dt.Rows[0][1]?=?false;
????????dtOnlyScheme.Rows.Add(dt.Rows[0].ItemArray);
//獲取行的狀態
????????if?(dt.Rows[0].RowState?==?DataRowState.Unchanged)
????????{
??????????
????????}
//將表轉換成xml數據流形式
????????System.IO.TextWriter?tw?=?new?System.IO.StringWriter();
????????????//if?TableName?is?empty,?WriteXml()?will?throw?Exception.
????????????dtNeedCoveret.TableName=dtNeedCoveret.TableName.Length==0?"Table_AX":dtNeedCoveret.TableName;
????????????dtNeedCoveret.WriteXml(tw);
????????????dtNeedCoveret.WriteXmlSchema(tw);
????????System.IO.TextReader?trDataTable?=?new?System.IO.StringReader(xml.Substring(0,?xml.IndexOf("<?xml")));
????????????System.IO.TextReader?trSchema?=?new?System.IO.StringReader(xml.Substring(xml.IndexOf("<?xml")));
????????????DataTable?dtReturn?=?new?DataTable();
????????????dtReturn.ReadXmlSchema(trSchema);
????????????dtReturn.ReadXml(trDataTable);
//對表中的數據進行篩選
????????//It's?so?strange?that?the?second?row?has?been?filtered
????????//the?second?row?show?in?GridView?never
????????//It?means?null?field?will?be?filter?always.
????????//Filter?the?all?conditions
????????dt.DefaultView.RowFilter?=?"column1?<>?true";
????????//dt.DefaultView.RowFilter?=?"column1?=?true";
????????dt.DefaultView.RowStateFilter?=?DataViewRowState.Added;
//對表的數據排序
????????//Stupid?method
????????DataRow[]?drsss?=?dt.Select(String.Empty,?"column0?DESC?,?column1?ASC");
????????//Clever?method
????????dt.DefaultView.Sort?=?"column0?,?column1?ASC";?????
????????dt.DefaultView.Sort?=?"ID?,Name?ASC";
????????dt=dt.DefaultView.ToTable();
//表的合并
????????//兩個結構相同的DT合并
????????/**////?<summary>
????????///?將兩個列不同的DataTable合并成一個新的DataTable
????????///?</summary>
????????///?<param?name="dt1">表1</param>
????????///?<param?name="dt2">表2</param>
????????///?<returns>合并過的新表</returns>
????????private?DataTable?UnionSameDataTable(DataTable?dt1,?DataTable?dt2)
????????{
????????????DataTable?dt3?=?dt1.Clone();
????????????object[]?obj?=?new?object[dt3.Columns.Count];
????????????for?(int?i?=?0;?i?<?dt1.Rows.Count;?i++)
????????????{
????????????????dt1.Rows[i].ItemArray.CopyTo(obj,?0);
????????????????dt3.Rows.Add(obj);
????????????}
????????????for?(int?i?=?0;?i?<?dt2.Rows.Count;?i++)
????????????{
????????????????dt2.Rows[i].ItemArray.CopyTo(obj,?0);
????????????????dt3.Rows.Add(obj);
????????????}
????????????return?dt3;
????????}
????????//兩個結構不同的DT合并
????????/**////?<summary>
????????///?將兩個列不同的DataTable合并成一個新的DataTable
????????///?</summary>
????????///?<param?name="dt1">表1</param>
????????///?<param?name="dt2">表2</param>
????????///?<returns>合并過的新表</returns>
????????private?DataTable?UniteDataTable(DataTable?dt1,?DataTable?dt2)
????????{
????????????DataTable?dt3?=?dt1.Clone();
????????????for?(int?i?=?0;?i?<?dt2.Columns.Count;?i++)
????????????{
????????????????dt3.Columns.Add(dt2.Columns[i].ColumnName);
????????????}
????????????object[]?obj?=?new?object[dt3.Columns.Count];
????????????for?(int?i?=?0;?i?<?dt1.Rows.Count;?i++)
????????????{
????????????????dt1.Rows[i].ItemArray.CopyTo(obj,?0);
????????????????dt3.Rows.Add(obj);
????????????}
????????????if?(dt1.Rows.Count?>=?dt2.Rows.Count)
????????????{
????????????????for?(int?i?=?0;?i?<?dt2.Rows.Count;?i++)
????????????????{
????????????????????for?(int?j?=?0;?j?<?dt2.Columns.Count;?j++)
????????????????????{
????????????????????????dt3.Rows[i][j?+?dt1.Columns.Count]?=?dt2.Rows[i][j].ToString();
????????????????????}
????????????????}
????????????}
????????????else
????????????{
????????????????DataRow?dr3;
????????????????for?(int?i?=?0;?i?<?dt2.Rows.Count?-?dt1.Rows.Count;?i++)
????????????????{
????????????????????dr3?=?dt3.NewRow();
????????????????????dt3.Rows.Add(dr3);
????????????????}
????????????????for?(int?i?=?0;?i?<?dt2.Rows.Count;?i++)
????????????????{
????????????????????for?(int?j?=?0;?j?<?dt2.Columns.Count;?j++)
????????????????????{
????????????????????????dt3.Rows[i][j?+?dt1.Columns.Count]?=?dt2.Rows[i][j].ToString();
????????????????????}
????????????????}
????????????}
????????????return?dt3;
????????}
????????//多個?結構相同的DataTable合并
????????public?DataTable?GetAllEntrysDataTable()
????????{
????????????DataTable?newDataTable?=?GetEntrysDataTable(0).Clone();
????????????object[]?obj?=?new?object[newDataTable.Columns.Count];
????????????for?(int?i?=?0;?i?<?entryGroups.GetEntryGroupCount();?i++)
????????????{
????????????????for?(int?j?=?0;?j?<?GetEntrysDataTable(i).Rows.Count;?j++)
????????????????{
????????????????????GetEntrysDataTable(i).Rows[j].ItemArray.CopyTo(obj,?0);
????????????????????newDataTable.Rows.Add(obj);
????????????????}
????????????}
????????????return?newDataTable;
????????}
//執行DataTable中的查詢返回新的DataTable
????????//方法一
????????/**////?<summary>
????????///?執行DataTable中的查詢返回新的DataTable
????????///?</summary>
????????///?<param?name="dt">源數據DataTable</param>
????????///?<param?name="condition">查詢條件</param>
????????///?<returns></returns>
????????private?DataTable?GetNewDataTable(DataTable?dt,?string?condition)
????????{
????????????DataTable?newdt?=?new?DataTable();
????????????newdt?=?dt.Clone();
????????????DataRow[]?dr?=?dt.Select(condition);
????????????for?(int?i?=?0;?i?<?dr.Length;?i++)
????????????{
????????????????newdt.ImportRow((DataRow)dr[i]);
????????????}
????????????return?newdt;//返回的查詢結果
????????}
????????//方法二
????????/**////?<summary>
????????///?執行DataTable中的查詢返回新的DataTable
????????///?</summary>
????????///?<param?name="dt">源數據DataTable</param>
????????///?<param?name="condition">查詢條件</param>
????????///?<returns></returns>
????????private?DataTable?GetNewDataTable(DataTable?dt,?string?condition)
????????{
????????????DataTable?newdt?=?new?DataTable();
????????????newdt?=?dt.Clone();
????????????DataRow[]?rows?=?dt.Select(condition);
????????????foreach?(DataRow?row?in?rows)
????????????{
????????????????newdt.Rows.Add(row.ItemArray);
????????????}
????????????return?newdt;
????????}
posted on 2008-02-15 18:13 DotNet編程 閱讀(...) 評論(...) 編輯 收藏
轉載于:https://www.cnblogs.com/furenjun/archive/2008/02/15/excel.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的通过OleDB连接方式,访问Access,Excel数据库.的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hebb负向规则与矛盾解对
- 下一篇: 使用 HttpWebRequest 向网