C#和VB.NET連接Access
一、直接通過軟件連接Access表
1:新建一個windowsForm工程。
2:打開"檢視\伺服器總管\資料連接"后,右擊"資料連接"后打開"連接資料連接",選擇正確的資料來源與資料庫檔名,若有密碼請輸入正確的密碼,如無,則不輸入。
3:點擊"測試連接"后,顯示連接成功。
4:添加一個DataGridView控件,點擊Data Source屬性,選擇"Add Project Data Source",然后找到添加的Access表"Administrator"。如下圖所示:
5:點擊調試,及顯示其表"Administrator"的全部。
二、C#連接Access數據庫文件
1:通過OLEDB的Connection來連接數據庫文件,具體代碼如下:
/// <summary>
///連接數據庫文件
/// </summary>
/// <param name="intFlag">連接標志位(0:普通方式打開;1:以獨占方式打開)</param>
/// <param name="path">數據庫文件的路徑</param>
/// <returns>OleDbConnection</returns>
private static OleDbConnection getConnection(int intFlag,string path)
{
string strFilePath = null;//數據庫文件路徑
string strConn = null;//打開數據庫語句
//普通方式打開
if (intFlag == 0)
{
//strFilePath = Application.StartupPath + @"\db\Database.mdb";
strFilePath = path;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strFilePath + ";";
}
//以獨占方式打開
if (intFlag == 1)
{
strFilePath = Application.StartupPath + @"\db\Database_1.mdb";
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strFilePath + ";" +
"Jet OLEDB:Database Password=123;";
}
OleDbConnection oleConn = new OleDbConnection(strConn);
return oleConn;
}
2:成功連接數據庫文件后,需要讀取里面的內容並顯示出來,其代碼如下:
/// <summary>
///查看數據庫文件並填充
/// </summary>
/// <param name="intFlag">填充標志位(0:DataGridView控件;1:ListView控件)</param>
/// <param name="path">數據庫文件路徑</param>
/// <param name="obj">填充控件</param>
public void DataFille(int intFlag,string path ,object obj)
{
OleDbConnection oleConn = getConnection(intFlag, path);
if (oleConn.State == ConnectionState.Open)//判斷數據庫是否關閉
{
oleConn.Close();
}
oleConn.Open();
string strSelect = "select * from Administrator";//查詢語句(此句表示返回整張表)
if (intFlag == 0)
{
DataGridView dv = (DataGridView)obj; //拆箱操作
OleDbDataAdapter da = new OleDbDataAdapter(strSelect, oleConn);//建立適配器,通過SQL語句去搜索數據庫
DataSet ds = new DataSet();
//建立數據集
da.Fill(ds, "0");
DataTable dt = ds.Tables["0"];
dv.DataSource = dt;//把表dt顯示到DataGridView控件上
}
if (intFlag == 1)
{
ListView lv = (ListView)obj;
OleDbCommand oleCmd = new OleDbCommand(strSelect, oleConn);//執行的預存式
OleDbDataReader oleRed = oleCmd.ExecuteReader();//執行查詢語句,並讀取相應的數據
string[] str = new string[oleRed.FieldCount];
lv.Columns.Clear();//清除列名
lv.Items.Clear();//清除表格內容
//添加列名
for (int i = 0; i < oleRed.VisibleFieldCount; i++)//獲取列名
{
lv.Columns.Add(oleRed.GetName(i));
}
while (oleRed.Read())
{
ListViewItem item = new ListViewItem(oleRed[0].ToString());//從第1行開始添加
for (int i = 1; i < oleRed.FieldCount; i++)
{
item.SubItems.Add(oleRed[i].ToString());//添加剩余行
}
lv.Items.Add(item);//添加到listview控件上
}
}
三、VB.NET連接Access數據庫文件
''' <summary>
''' 查看數據庫
''' </summary>
''' <param name="filepath">數據庫文件的路徑</param>
''' <param name="obj">填充控件內容</param>
''' <param name="flag">填充標志位(0:DataGridView控件;1:listview控件)</param>
''' <param name="password">數據庫文件密碼</param>
''' <returns>flase:打開失敗;true:打開成功</returns>
''' <remarks></remarks>
Public Function DataFille(ByVal filepath As String, ByVal obj As Object, Optional ByVal flag As Integer = 0, Optional ByVal password As String = Nothing) As Boolean
Dim bolReturn As Boolean = False
Try
'連接數據庫
Dim oleCon As OleDbConnection = getConnection(filepath)
If (oleCon.State = ConnectionState.Open) Then
oleCon.Close()
End If
oleCon.Open()
'查詢語句
Dim strSelect As String = "select * form Administrator"
'以DataGridView填充
If flag = 0 Then
Dim dgv As DataGridView = obj
'執行語句
Dim da As OleDbDataAdapter = New OleDbDataAdapter(strSelect, oleCon)
'聲明連接池
Dim ds As DataSet = New DataSet()
'填充數據集
da.Fill(ds, "0")
'填充到表dt中
Dim dt As DataTable = ds.Tables("0")
'填充控件
dgv.DataSource = dt
End If
'以listview填充
If flag = 1 Then
Dim lv As ListView = obj
'執行語句
Dim oleCmd As OleDbCommand = New OleDbCommand(strSelect, oleCon)
'讀取語句
Dim oleRed As OleDbDataReader = oleCmd.ExecuteReader()
'清除控件內容
lv.Columns.Clear()
lv.Items.Clear()
'添加字段名
For i = 0 To oleRed.VisibleFieldCount - 1
lv.Columns.Add(oleRed.GetName(i))
Next
'添加數據表內容
While (oleRed.Read())
Dim item As ListViewItem = New ListViewItem(oleRed(0).ToString())
For i = 0 To oleRed.FieldCount - 1
item.SubItems.Add(oleRed(i).ToString())
Next
lv.Items.Add(item)
End While
End If
bolReturn = True
Catch ex As Exception
bolReturn = False
End Try
Return bolReturn
End Function
四、常見原因
1:若發生"找不到可安裝的ISAM"錯誤,一般來說是把數據庫的連接語句書寫錯誤。正確語句為:String strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strFilePath + ";";
2:若還發生其他的錯誤導致連接不上Access數據庫,可嘗試將編譯器的平台目標設置為X64。