[ADO.NET] 如何使用 OLE DB 讀 / 寫 記事本 Textfile
1.連線字串定義如下:
1-1.檔案位置:"Data Source=C:\\;" (不要把檔案給加進去,只要檔案的位置)
1-2.提供者名稱:"Provider=Microsoft.Jet.OLEDB.4.0;"
1-3.檔案格式:"Extended Properties=Text"
1-4.第一行是否為標題:"HDR="Yes;"
1-5.檔案內容分格符號:"FMT=Delimited';";
2.分格符號若是用逗點區格用"Delimited",用Tab區格用”TabDelimited”。
3.Extended Properties參數若有多項時,記得必須用單引號括起來阿4.讀寫記事本跟讀寫Excel差不多,幾乎是一樣的,把握住DataTable的使用大原則即可
5.DataTable可以單獨存在,若DataSet只有一個DataTable,就應該盡量用DataTable來取代DataSet,如此可以節省資源。
6.以下提供了幾組讀取的方式
6-1.利用利用 OleDbCommand 的 ExecuteReader 方法讀取到 OleDbDataReader,再利用 Read 方法列舉資料
if (((Button)(sender)).Text == "法一")
{
//利用OleDbCommand的ExecuteReader方法讀取
dr = cmd.ExecuteReader();
while (dr.Read())
{
listBox1.Items.Add(dr[0].ToString() + "\t" + dr[1].ToString());
}
}
else if (((Button)(sender)).Text == "法二")
{
//載入DataSet
DataSet ds = new DataSet();
da.Fill(ds, "Table");
foreach (DataRow data in ds.Tables[0].Rows)
{
listBox1.Items.Add(data[0].ToString() + "\t" + data[1].ToString());
Console.WriteLine(data[1].ToString());
}
}6-3.同樣是用 OleDbDataAdapter 的 Fill 方法讀取資料到 DataSet,再利用巢狀迴圈讀取資料
else if (((Button)(sender)).Text == "法三")
{
//載入DataSet
DataSet ds = new DataSet();
da.Fill(ds, "Table");
//取得Columns數量
int Col = ds.Tables[0].Columns.Count;
//取得Rows數量
int Row = ds.Tables[0].Rows.Count;
for (int i = 0; i < Row - 1; i++)
{
for (int j = 0; j < Col; j++)
{
listBox1.Items.Add(ds.Tables[0].Rows[i][j].ToString());
}
}
}
else if (((Button)(sender)).Text == "法四")
{
Thread.Sleep(100);
//載入DataTable
dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
//列舉資料
foreach (DataRow data in dt.Rows)
{
listBox1.Items.Add(data[0].ToString() + "\t" + data[1].ToString());
}
}
7.範例下載
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET