日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

通过OleDB连接方式,访问Access,Excel数据库.

發(fā)布時間:2024/4/17 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 通过OleDB连接方式,访问Access,Excel数据库. 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
通過OleDB連接方式,訪問Access,Excel數(shù)據(jù)庫. 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;
????????}


=======查詢數(shù)據(jù)===========
?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數(shù)據(jù)庫需在表名后加
"$";

=======增加字段===========
SqlStr?
=?"??ALTER?TABLE??["?+?newMaTolName.Replace("$","")?+?"]???ADD?IsRead?decimal,RowNo?long?IDENTITY(1,1)??";
cmd?
=?new?OleDbCommand(SqlStr,?OleConn);
int?affectRows?=?cmd.ExecuteNonQuery();

=======在DataSet表中增加一列=======
myDS?是已保存有數(shù)據(jù)的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();

=======獲取數(shù)據(jù)源的框架信息,如其中的表名等.==============
System.Data.DataTable?dt
=?OleConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,?null);

=======獲取與更新?DataGrid中的數(shù)據(jù)改變,并更新數(shù)據(jù)源.==========================
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);

????????????
//設(shè)置表的主鍵
????????????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];
????????}



=======表的復(fù)制=========
//創(chuàng)建新表dataTableDest
DataTable?dataTableDest?=?new?DataTable();?
//將表dataTableSource的結(jié)構(gòu)復(fù)制到新表dataTableDest中
dataTableDest?=?dataTableSource.Clone();?
//然后再復(fù)制數(shù)據(jù)到新表中
foreach(DataRow?dr?in?dataTableSource.Rows)?
{?
//使用ImportRow()方法復(fù)制數(shù)據(jù)。若用dataTableDest.Rows.Add(dr)將會出錯:System.ArgumentException:?該行已經(jīng)屬于另一個表。????????????
dataTableDest.ImportRow(dr);?
}

直接用下面的方法就行了
dataTableDest?=?dataTableSource.Copy();

========創(chuàng)建表=================
????????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'");
//復(fù)制表包括數(shù)據(jù)
????????DataTable?dtNew?=?dt.Copy();
//只復(fù)制表的架構(gòu)
????????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);

//獲取行的狀態(tài)
????????if?(dt.Rows[0].RowState?==?DataRowState.Unchanged)
????????
{
??????????
????????}


//將表轉(zhuǎn)換成xml數(shù)據(jù)流形式
????????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);


//對表中的數(shù)據(jù)進行篩選
????????
//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;

//對表的數(shù)據(jù)排序
????????
//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();


//表的合并

????????
//兩個結(jié)構(gòu)相同的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;
????????}


????????
//兩個結(jié)構(gòu)不同的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;
????????}



????????
//多個?結(jié)構(gòu)相同的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;
????????}


//執(zhí)行DataTable中的查詢返回新的DataTable
????????
//方法一
????????/**////?<summary>
????????
///?執(zhí)行DataTable中的查詢返回新的DataTable
????????
///?</summary>
????????
///?<param?name="dt">源數(shù)據(jù)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;//返回的查詢結(jié)果
????????}


????????
//方法二
????????/**////?<summary>
????????
///?執(zhí)行DataTable中的查詢返回新的DataTable
????????
///?</summary>
????????
///?<param?name="dt">源數(shù)據(jù)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編程 閱讀(...) 評論(...) 編輯 收藏

轉(zhuǎn)載于:https://www.cnblogs.com/furenjun/archive/2008/02/15/excel.html

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的通过OleDB连接方式,访问Access,Excel数据库.的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 激情五月综合网 | 免费看美女隐私网站 | 久热网 | 精品成在人线av无码免费看 | 亚洲天堂一区二区三区 | 在线观看精品 | 不卡精品 | 黑丝一区 | 91麻豆国产在线观看 | 色撸撸在线视频 | 午夜国产免费 | 亚洲成网站| 114国产精品久久免费观看 | 嫩草精品 | 69天堂网 | 波多野结衣中文在线 | 欧美三p| 国产小视频在线 | 最新av在线播放 | 女同性恋毛片 | av在线免费观看网站 | 美女的诞生免费观看在线高清 | 国产午夜精品一区二区三区欧美 | 好紧好爽再浪一点视频 | 亚洲色图欧美激情 | 欧美性久久 | 国产东北女人做受av | 国产高清无密码一区二区三区 | 国产99自拍 | 久久99中文字幕 | 国产精品一区在线 | 黄片毛片在线观看 | 在线观看亚洲大片短视频 | 欧美性视频在线 | 精品人妻码一区二区三区红楼视频 | 国产精彩视频在线观看 | 五月天激情影院 | 国产精品亚洲成在人线 | 婷婷精品 | 精品一区二区三区免费观看 | 亚洲自拍另类 | 欧美成在线视频 | 超碰丝袜 | 国产一及毛片 | 人人射人人爽 | 催眠调教艳妇成肉便小说 | 国产网站大全 | 老熟女重囗味hdxx69 | 蜜臀久久99精品久久久久久 | 黄片毛片| 美女隐私黄www网站动漫 | xxxⅹ少妇少妇xxxx | 亚洲国产成人在线 | 白浆一区 | 欧美精品一区二区三区久久久 | 国产精品第6页 | 日韩免费观看一区二区 | 日本三级黄色大片 | 操操操操操操 | 一区一区三区产品乱码 | 日韩免费观看一区二区三区 | 91麻豆精品视频 | 日韩福利一区 | 欧美日韩在线播放视频 | 毛片2 | av制服丝袜在线 | 欧美精品 在线观看 | 国产有码在线 | 久久网伊人 | 中文字幕8 | 午夜香蕉网 | 精品国产乱子伦 | 成人手机在线播放 | 免费看黄视频的网站 | 日本女优中文字幕 | 中文字幕蜜臀 | 少妇系列在线观看 | 91丨九色丨蝌蚪丨对白 | 一级成人av | 淫片在线 | 日本免费黄网站 | 青青青视频免费 | 中文字幕在线导航 | 成人毛片视频网站 | 男人天堂综合 | 黄色a一级视频 | 农村老女人av | 女生的胸无遮挡 | 亚洲精品乱码久久久久99 | 黄色特级一级片 | 亚洲久久天堂 | 中文字幕在线亚洲 | 激情丁香六月 | 在线免费观看不卡av | av大全免费观看 | 日韩在线一区二区三区四区 | 亚洲人 女学生 打屁股 得到 | 日本午夜电影网站 | av影院在线观看 |