簡體   English   中英

用於Microsoft Access 2010.accdb的SQL連接字符串

[英]SQL connection string for microsoft access 2010 .accdb

我正在使用winforms進行簡單的登錄表單,並在C#中訪問2010數據庫(.accdb)。

我有以下代碼,似乎連接字符串是錯誤的。 我試過搜索,發現.Jet是用於訪問07 ?? 但這似乎也沒有用。 我是數據庫的業余愛好者(代碼來自msdn)。 我無法理解我應該在這個例子中使用哪個。

訪問表名稱:哈哈

ID (PK)  |   password
-----------------------
   1     |   testing
        System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\BC207\test.accdb");
        System.Data.SqlClient.SqlCommand comm = new System.Data.SqlClient.SqlCommand();

        comm.CommandText = "SELECT HAHA(*) FROM password";
        comm.CommandType = CommandType.Text;
        comm.Connection = conn;

        conn.Open();

        Object returnValue = comm.ExecuteScalar();
        conn.Close();

        MessageBox.Show((string)returnValue);

編輯:表的名稱是密碼,我想要獲取值的字段是ID。

SQL語句我把它寫成: SELECT ID FROM password

是的,表中只有一個記錄中只有一個記錄作為主鍵。

無論如何,問題是程序在第一行執行時掛起
-> Keyword not supported: 'provider'.

所以我想我有一個錯誤的連接字符串..

對於Acces數據庫(.mdb,.accdb等...),您希望使用OleDbConnection ,而不是SqlConnection(SQL Server),如下所示:

conn = new System.Data.OleDb.OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\BC207\test.accdb")

編輯 :正如所指出的,對於訪問應該使用OleDbConnection ,而不是SqlConnection ...

您可以使用更緊湊的方式,並確保連接被關閉並在任何可能的情況下處理,即使拋出異常,也可以使用using語句:

您的查詢文本也可能是其他人建議的錯誤...

using (var conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\BC207\test.accdb"))
using (var comm = conn.CreateCommand())
{
    comm.CommandText = "SELECT password FROM HAHA";
    comm.CommandType = CommandType.Text;

    conn.Open();

    var returnValue = comm.ExecuteScalar();

    MessageBox.Show(returnValue.ToString());
}

編輯:你確定表HAHA只包含一行嗎? 因為ExecuteScalar只返回一個值,如果你想獲得1列但是從許多記錄中你可以使用DataReader或DataSet ......

comm.CommandText = "SELECT HAHA(*) FROM password";

這是不對的。

“從HAHA中選擇密碼”

你的SQL語句應該是,

SELECT * from HAHA

要么

 SELECT [Password] From HAHA

編輯:

您應該更改ConnectionString

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM