[英]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中選擇密碼”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.