[英]Using Access databases in C#?
我如何在C#(控制台應用程序,而不是web asp.net)中使用Microsoft Access( .accdb
)數據庫? 根據我的閱讀,我將需要使用ADO.NET
,但我真的不知道如何在C#控制台應用程序中執行此操作。 在使用MySQL
PHP中,我一直在尋找mysqli_construct
有人能指出我可以幫助我的教程或文檔嗎? 我正在嘗試將其用作存儲和訪問非Web非ASP.NET應用程序數據的方法,如果這會改變任何內容。
謝謝!
有關使用ADO.NET編輯Access數據庫的信息,請參閱此演練 。
現在,當該示例使用Web應用程序時,請不要擔心,正在使用的類仍然適用於控制台應用程序。
您需要使用的主要類是:
上面的類的文檔都有代碼示例,這些示例是控制台應用程序示例。
下面是一個在控制台應用程序中使用的代碼片段(請記住添加: using System.Data.OleDb;
string connectionString =
@"Provider=Microsoft.Jet.OLEDB.4.0;" +
@"Data Source=C:\path\to\your\database.mdb;" +
@"User Id=;Password=;";
string queryString = "SELECT Foo FROM Bar";
using (OleDbConnection connection = new OleDbConnection(connectionString))
using (OleDbCommand command = new OleDbCommand(queryString, connection))
{
try
{
connection.Open();
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(reader[0].ToString());
}
reader.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
另外,只是注意到你明確地說了一個.accdb數據庫。 為此,請獲取Microsoft Access數據庫引擎2010可再發行組件 。 然后,需要將連接字符串中的提供程序更改為: Microsoft.ACE.OLEDB.12.0
(有關詳細信息,請參閱該鏈接中的說明)。
只需使用System.OleDb
。 這是我使用的一個小課程
首先, 將數據庫文件放在App_Data中
web.config中
<connectionStrings>
<add name="MyConnectionString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\DatabaseName.accdb" providerName="System.Data.OleDb"/>
</connectionStrings>
App_Code文件/ DataAccess.cs
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
public class DataAccess
{
#region "Public Methods"
public static DataTable GetTableFromQuery(string query, Dictionary<string, object> parameters, CommandType commandType)
{
DataTable dataTable = new DataTable();
using (OleDbConnection conn = GetConnection()) {
using (OleDbCommand cmd = new OleDbCommand(query, conn)) {
cmd.CommandType = commandType;
if (parameters != null) {
foreach (KeyValuePair<string, object> parameter in parameters) {
cmd.Parameters.AddWithValue(parameter.Key, parameter.Value);
}
}
using (OleDbDataAdapter adapter = new OleDbDataAdapter(cmd)) {
adapter.Fill(dataTable);
}
}
}
return dataTable;
}
public static object GetSingleObjectFromQuery(string query, Dictionary<string, object> parameters, CommandType commandType)
{
object value = null;
using (OleDbConnection conn = GetConnection()) {
using (OleDbCommand cmd = new OleDbCommand(query, conn)) {
cmd.CommandType = commandType;
if (parameters != null) {
foreach (KeyValuePair<string, object> parameter in parameters) {
cmd.Parameters.AddWithValue(parameter.Key, parameter.Value);
}
}
conn.Open();
using (OleDbDataReader reader = cmd.ExecuteReader()) {
while (reader.Read()) {
value = reader.GetValue(0);
}
}
}
}
return value;
}
public static int ExecuteNonQuery(string query, Dictionary<string, object> parameters, CommandType commandType)
{
int value = 1;
using (OleDbConnection conn = GetConnection()) {
using (OleDbCommand cmd = new OleDbCommand(query, conn)) {
cmd.CommandType = commandType;
if (parameters != null) {
foreach (KeyValuePair<string, object> parameter in parameters) {
cmd.Parameters.AddWithValue(parameter.Key, parameter.Value);
}
}
cmd.Connection.Open();
value = cmd.ExecuteNonQuery();
}
}
return value;
}
#endregion
#region "Private Methods"
private static OleDbConnection GetConnection()
{
string ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings("MyConnectionString").ConnectionString;
return new OleDbConnection(ConnectionString);
}
#endregion
}
var myTable = DataAccess.GetTableFromQuery("SELECT * FROM TableName", null, CommandType.Text);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.