1

Windows 7 x64 マシンで Visual Studio Developer Preview 2011 を実行しています。

私は C# を学び始めたばかりで、データベースへの接続に問題があります。MS Access でデータベースを作成し、Connect to a Databaseオプションを使用して接続を作成しました。

ここに接続文字列があります

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\USER\Documents\BlankDB.mdb

私はこのチュートリアルに従っています

masterConnectionStringに変数を追加しProject Settings、接続文字列の値で初期化しました。

プログラムはコンパイルされますが、実行時に次のエラーが発生します

タイプ 'System.ArgumentException' の初回例外が System.Data.dll で発生しました

追加情報: サポートされていないキーワード: 'provider'。この後、プログラムは終了します。

文字列からプロバイダー部分を削除すると、次の例外がスローされます。

追加情報:
SQL Server への接続を確立中に、ネットワーク関連またはインスタンス固有のエラーが発生しました。
サーバーが見つからないか、アクセスできませんでした。
インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。
(プロバイダー: SQL ネットワーク インターフェイス、エラー: 26 - 指定されたサーバー/インスタンスの検索中にエラーが発生しました)

私はしばらくの間試してきましたが、これは本当にイライラしています。C# でデータベースに接続する他の簡単な方法はありますか? Visual Studio 内から SQL Server データベースを作成することはできますか?

データベースへの接続に使用するコードを次に示します。

 static void TryCreateTable()
        {
            using (SqlConnection con = new SqlConnection(DogsDB.Properties.Settings.Default.BlankDBConnectionString))
            {
                con.Open();
                try
                {
                    using (SqlCommand command = new SqlCommand("CREATE TABLE Dogs1 (Weight INT, Name TEXT, Breed TEXT)", con))
                    {
                        command.ExecuteNonQuery();
                    }
                }
                catch
                {
                    Console.WriteLine("Table couldn't be created.");
                }
            }
        }
4

3 に答える 3

4

あなたはSQLサーバーのチュートリアルに従っています。MS Access データベースに接続するには、接続コードは次のようになります。

OleDbConnection sqlConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Users\\USER\\Documents\\BlankDB.mdb");

バックスラッシュがエスケープされていることを確認してください。

それからあなたはすることができます

try{
  sqlConn.Open();
  OleDbCommand command = new OleDbCommand("CREATE....", sqlConn);
  command.CommandType = CommandType.Text;
  command.ExecuteNonQuery();
}
catch(InvalidOperationException ioe)
{
    ....
}
catch(OleDbException ode)
{
    ....
}
sqlConn.Close();
于 2012-01-26T19:40:44.010 に答える
3

これはOleDB接続文字列であり、SQLServer接続文字列ではありません。
と一緒に使用する必要がありますOleDbConnection

AccessではなくSQLServerを使用する場合は、SQL ServerManagementStudioまたはVSのサーバーエクスプローラーを使用してデータベースを作成できます。
その後、SQLServer接続文字列を使用して接続できます。

ここでサンプルの接続文字列を見ることができます。

于 2012-01-26T19:26:52.323 に答える
1

このエラーが発生する理由はいくつかあります。

1)参照Webサイトは、AccessではなくSQLServerデータベースを使用することです。2)x64オペレーティングシステムで実行しているため、次のことが当てはまります。

The Microsoft OLE DB Provider for Jet and the Jet ODBC driver are available in 32-bit versions only. You can't run them in 64 bit mode. 

For example, you have a 32-bit application that uses the Microsoft OLE DB Provider for Jet. If you migrate the application to run in the

64ビットモードの場合、アプリケーションはMicrosoft OLE DB ProviderforJetを使用してデータソースに接続できません。この問題は、アプリケーションに64ビットバージョンのMicrosoft OLE DB ProviderforJetが必要なために発生します。Webサイトは、32ビットまたは64ビットのアプリケーションのいずれかである可能性があることにも注意してください。

したがって、解決策は次を使用することです。

http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=13255

64ビット環境でプログラムを実行し、jetを使用してアクセス、Excel、またはテキストファイルを開く必要がある場合、これを機能させるためのいくつかのオプションがあります。•プログラムをWoW64モードで実行します(64ビットシステムで32ビットをエミュレートします)。これにより、32ビットドライバが機能します。•アプリケーションがIIS7でホストされているWebアプリの場合、32ビットモードで実行するようにWebサイトアプリケーションプールを構成することを選択できます。•新しいOffice2010では、ブース32ビットおよび64ビットバージョンとして提供される新しいドライバー「2010OfficeSystemDriver」が登場します。これらのドライバーを使用すると、新しい64ビットドライバーを利用して、64ビット環境でアプリケーションをAccess、Excel、およびテキストファイルに接続できます。プロバイダー名は「Microsoft.ACE.OLEDB.14.0」です。Officeスイートを購入またはインストールする必要はありません。

追加の支援が必要な場合は、使用しているコードを提供する必要があります。

リンクされたライブラリを調査してインストールした後、質問のコードを更新する必要があります。

于 2012-01-26T19:43:09.290 に答える