2017-03-04 72 views
0

我想從C#連接到我的MS Access數據庫的C#和我收到以下錯誤數據庫連接?請幫助使用訪問

+2

告訴我們一些代碼:你是如何連接,你的連接字符串是什麼... – Nino

回答

0

使用連接字符串是這樣的:

public static string ConStr = "Provider=Microsoft.ACE.Oledb.15.0; Data Source=D:\db.accdb;"; 


public static void DeleteTable(string TableName) 
{ 
    OleDbConnection connection = new OleDbConnection(OLEDB.ConStr); 
    OleDbCommand oleDbCommand = new OleDbCommand(string.Format("delete from [{0}]", (object) TableName), connection); 
    try 
    { 
     connection.Open(); 
     oleDbCommand.ExecuteNonQuery(); 
    } 
    catch 
    { 
    } 
    finally 
    { 
     connection.Close(); 
    } 
} 
0

我做了一個類爲。它可以與最新的visual studio完美兼容,或者2010版與2010版相同。如果您擁有更新版本的訪問權限,則需要安裝Access Database Engine。它還包含一個函數,可以防止使用sql注入攻擊你的sql,並創建md5散列的方法。

using System.Data; 
using System.Data.OleDb; 
using System.Text; 
using System.Security.Cryptography; 

public class Database 
{ 

    #region Variables 

    String Name; 
    String Path; 
    String ConnectionString; 
    OleDbConnection Connection; 

    #endregion 

    #region Init Destroy 

    public Database(String Name) 
    { 
     this.Name = @"App_Data\" + Name; 
     Path = HttpContext.Current.Server.MapPath(this.Name); 
     ConnectionString = @"Provider = Microsoft.ACE.OLEDB.12.0; " + 
          "Data Source = " + Path + ";" + 
          "Persist Security Info = False;"; 
     Connection = new OleDbConnection(ConnectionString); 
     if (Connection.State == System.Data.ConnectionState.Closed) 
     { 
      Connection.Open(); 
     } 
    } 

    public void finalize() 
    { 
     if (Connection.State == System.Data.ConnectionState.Open) 
     { 
      try { Connection.Close(); } 
      catch { } 
     } 
    } 

    #endregion 

    #region Queries 

    public void execute(String query) 
    { 
     OleDbCommand command = new OleDbCommand(query, Connection); 
     command.ExecuteNonQuery(); 
    } 

    public OleDbDataReader select(String query) 
    { 
     OleDbCommand command = new OleDbCommand(query, Connection); 
     OleDbDataReader data = command.ExecuteReader(); 
     return data; 
    } 

    public DataSet selectData(String query) 
    { 
     OleDbCommand command = new OleDbCommand(query, Connection); 
     OleDbDataAdapter adp = new OleDbDataAdapter(command); 
     DataSet ds = new DataSet(); 
     adp.Fill(ds); 
     return ds; 
    } 

    public object scalar(String query) 
    { 
     OleDbCommand command = new OleDbCommand(query, Connection); 
     object data = new object(); 
     data = command.ExecuteScalar(); 
     return data; 
    } 

    #endregion 

    #region Encryption Security 

    public String stripInjection(String field) 
    { 
     String x = field.Replace(@"'", string.Empty); 
     x = x.Replace(@"""", string.Empty); 
     return x; 
    } 

    public string md5Hash(string input) 
    { 
     StringBuilder hash = new StringBuilder(); 
     MD5CryptoServiceProvider md5provider = new MD5CryptoServiceProvider(); 
     byte[] bytes = md5provider.ComputeHash(new UTF8Encoding().GetBytes(input)); 

     for (int i = 0; i < bytes.Length; i++) 
     { 
      hash.Append(bytes[i].ToString("x2")); 
     } 
     return hash.ToString().ToUpper(); 
    } 

    #endregion 

} 

不要把完成在類的析構函數指令(如微軟的文檔中說,因爲它會推出一些例外)。只是把它當你完成了你的任務:

Database database = new Database("data.accdb"); 
DataSet result = database.selectData("SELECT something FROM table WHERE condition;"); 
database.finalize(); 
0

複製您的DATABSE文件.ACCDB項目的調試文件夾,然後在配置中添加app.config文件在您的項目下面的代碼

寫的app.config標籤

<connectionStrings> 
    <add name="db" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\sse_db.accdb;Persist Security Info=False;" 
     providerName="System.Data.Oledb" /> 
</connectionStrings> 

1)添加System.Configuration參考 使用連接對象如下

OleDbConnection con = new OleDbConnection(System.Configuration.ConfigurationManager.ConnectionStrings["db"].ConnectionString);