using System.Data.OleDb;//先引用命名空間
namespace DataReader1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/*特別註意:DataReader是壹行壹行地對數據進行讀取的,DataReader表其實是壹個內存數據表,其與DataSet類似*/
private void Form1_Load(object sender, EventArgs e)
{
string connStr, selectCmd;//定義兩個字符串變量分別用來存儲連接字符及SQL命令代碼
connStr ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=SCOREDB.mdb";//給將要使用的連接數據庫的連接詞賦值
selectCmd = "SELECT * FROM SCORE";//給將要執行的SQL語句賦值
OleDbConnection conn;//定義連接類的對象
OleDbCommand cmd;//建立命令類的對象
OleDbDataReader reader;//建立讀取數據OleDbDataReader類的對象
conn = new OleDbConnection(connStr);//新建連接對象,相當於準備用鑰匙開門了,而connStr相當於鑰匙
conn.Open();//打開連接,數據庫這扇門打開啦
cmd = new OleDbCommand(selectCmd, conn);//使"連接"與SQL命令關聯起來,這樣使將要執行的SQL語句與數據庫關聯起來了
reader = cmd.ExecuteReader();/*執行SQL語句並根據返回的查詢結果(壹個數據表)創建OleDbDataReader對象,
並賦值給原先定義好用來存儲該對象的變量,此時reader相當於壹個表,
且此時只有第壹行(即表頭那壹行)的數據可以直接使用*/
for (i = 0; i < reader.FieldCount; i++)/*當i小於reader這個表的列數(fieldcount的值是從零開始的)的
時候,就執行花括弧裏面的代碼*/
{
txtShow.Text += reader.GetName(i) + "\t";//獲取第i列(從零開始的)的列名,
}
txtShow.Text += "\n\n";
while (reader.Read())/*先將reader表的可以直接讀取的數據行往下移壹行,這樣表頭下面的壹行可以直接使用了,就這樣
壹直壹行壹行 往下移,知道reader表格的最後壹行用完為止*/
{
for (i = 0; i < reader.FieldCount; i++)//reader.fieldcount的值等於reader這個表格的列數,但是調用某壹列的時候下表是從零開始計數的
{
txtShow.Text += reader [i] + "\t";//reader[i]用來獲取當前可以直接讀取數據那壹行的第i列的值(i從零開始)。
}
txtShow.Text += "\n";
}
reader.Close();//關閉DataReader對象,釋放資源,DataReader表其實是壹個內存數據表
conn.Close();//斷開數據庫連接
}
}
}
總結:對OleDbConnection ,OleDbCommand,OleDbDataReader三個類都要創建 對象,因為要這三個類聯合起來使用才能訪問數據庫
另壹種方法:使用DataSet和DataBaseAdapter來訪問數據表中的數據
string connStr, selectCmd;
connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=SCOREDB.mdb";
selectCmd = "Select * From SCORE";
OleDbConnection conn;
OleDbDataAdapter myAdapter;
DataSet myDataSet = new DataSet();//新建壹個空的沒有表格的DataSet對象
conn = new OleDbConnection(connStr);
myAdapter = new OleDbDataAdapter(selectCmd, conn);
myAdapter.Fill(myDataSet, "成績單");
DataTable myDataTable = myDataSet.Tables["成績單"];/*要訪問表中的某些內容則應該先將該DataSet中的表 賦值給DataTable myDataTable*/
for (k = 0; k < myDataTable.Columns.Count; k++)//myDataTable.Columns.Count為數據表的列數
{
txtShow.Text += myDataTable.Columns[k].ColumnName + "\t";
}
txtShow.Text += "\n";
for (i = 0; i < myDataTable.Rows.Count; i++)
{
for (j = 0; j < myDataTable.Columns.Count; j++)//myDataTable.Columns.Count的列數,從1開始的
{
txtShow.Text += myDataTable.Rows[i][j] + "\t";//相當於二維數組
}
txtShow.Text += "\n";
二:使用SQL的DataReader來讀取數據庫的信息
using System.Data.SqlClient;//先引用命名空間
// 開始從數據庫中獲取密碼
string conString = @"server=localhost;database=數據庫名稱;Integrated Security=SSPI";
string selectCmd = "SELECT ID,PassWord FROM userInfo";
SqlConnection con = new SqlConnection(conString);
SqlCommand cmd;
SqlDataReader reader;
con.Open();
cmd = new SqlCommand(selectCmd, con);
reader = cmd.ExecuteReader();
while (reader.Read())
{
ID = reader.GetString(0);
PassWord = reader.GetString(1);
}
reader.Close();
con.Close();
//獲取密碼完畢
總結:對SqlConnection,SqlCommand, SqlDataReader都要創建對象,因為要用到這三個 類!
三:使用DataSet訪問數據庫
using System.Data.OleDb;先引用命名空間
string connStr, selectCmd;//定義兩個字符串變量分別用來存儲連接字符及SQL命令代碼
DataSet myDataSet = new DataSet();//新建壹個 DataSet 用來在內存中存放數據表
OleDbConnection conn;//定義連接器
OleDbDataAdapter myAdapter;//定義適配器
connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DB.mdb";//連接字符串
conn = new OleDbConnection(connStr);/*開始連接,因為適配器會自動打開和關閉數據庫,因此不要使用open和close函數,但是還是要有開始連 接這壹步*/
selectCmd = "Select * From SCORE";
myAdapter = new OleDbDataAdapter(selectCmd, conn);//使SQL語句與"連接"關聯起來,這與OleDbCommand類相似
myAdapter.Fill(myDataSet, "成績單");//將SQL查詢到的數據填充到myDataSet,中的"成績單"這個數據表中去
selectCmd = "Select * From STOCK";
myAdapter = new OleDbDataAdapter(selectCmd, conn);
myAdapter.Fill(myDataSet, "股票行情表");
selectCmd = "Select * From BOOK";
myAdapter = new OleDbDataAdapter(selectCmd, conn);
myAdapter.Fill(myDataSet, "碁峰圖書");//壹個DataSet有三個數據表,即"成績單","股票行情表","碁峰圖書"
for (int i = 0; i < myDataSet.Tables.Count; i++)
{
cboTable.Items.Add(myDataSet.Tables[i].TableName);//將數據表的名稱添加到組合框中去
}
cboTable.Text = myDataSet.Tables[2].TableName;
dataGridView1.DataSource = myDataSet.Tables[2];/*將dataGridView1與DataSet綁定,dataGridView1.DataSource壹改變, dataGridView中顯示的數據就會改變*/
private void btnSelect_Click(object sender, EventArgs e)
{
dataGridView1.DataSource = myDataSet.Tables[cboTable.Text];//可以使用表的名字來訪問 DataSet中的表集
}
給DataSet中的表改名 字,代碼如下:
DataTableMapping changeName=new DataTableMapping( );
changeName=myAdapter.tableMapping.Add ("原表名","新表名");
如果看不懂我建議妳去看書,介紹壹本書給妳,《visual c#2005完全開發指南》