0

Access 2007 と C# を使用してデータベースを学習しています。これまでは大変でしたが、比較的うまく対処できています。私がしなければならないことは、ユーザーが自分のピンに基づいて持っている金額について、私のデータベース テーブル Accounts にクエリを実行することです。使用している Windows フォームにボタンを配置し、クリックするとデータベースにクエリを実行します。通常どおりボタンを実行/クリックすると、次のエラーが表示されます。

基本的に私の質問は次のとおりです。アクセス許可を設定して、プログラムが自分の Access データベースに自由にアクセスできるようにするにはどうすればよいですか?

私の例外エラー:

例外: System.Data.OleDb.OleDbException: Microsoft Office Access データベース エンジンは、ファイル 'C:\Users\Public' を開くことも書き込むこともできません。すでに別のユーザーが排他的に開いているか、そのデータを表示および書き込みする権限が必要です。

私のコード:

  public partial class frmPin : Form
{
    static string connString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Public;Persist Security Info=True";
    static private int pin = 11; //The First Pin in my records, for debugging I inserted it directly.
    static string selectStatement = "SELECT Amount FROM Accounts WHERE(PIN=" + pin + ")";
    OleDbConnection conn = new OleDbConnection(connString);
    OleDbCommand cmd = new OleDbCommand(selectStatement);



    public frmPin()
    {
        InitializeComponent();

    }

    private void btnQry_Click(object sender, EventArgs e)
    {
       try
       {
           conn.Open();
           OleDbDataReader reader = cmd.ExecuteReader(); // executes query
           while (reader.Read()) // if can read row from database
            {
                txtBx.Text = reader.GetValue(1).ToString();
            }
        }
        catch (Exception ex)
        {
            txtBx.Text = "Exception: " + ex;  // Displays Exception
        }
        finally
        {
            conn.Close();  // finally closes connection
        }
}   
4

1 に答える 1

1

「C:\ Users \ Public」は、アクセスする*.mdbファイルの実際のパスに変更する必要があります。

"C:\ Users \ Public.mdb"

また

"C:\ Users \ Public \ Something.mdb"

データベースの名前に応じて:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;User Id=admin;Password=;

または、*。accdbファイルの場合もあります。そのような:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccess2007file.accdb;Persist Security Info=False;

http://www.connectionstrings.com/access-2007およびhttp://www.connectionstrings.com/accessを参照してください

また、Access 2007などの別のプログラムでファイルを開いている場合、ファイルが読み取り専用としてマークされている場合、またはセキュリティ権限が読み取りまたは書き込みアクセス権を持たない場合に、この種の問題が発生することがあります。ユーザーなどのグループに(ファイルシステム/ NTFSで)「拒否」アクセス許可を設定すると、管理者が拒否アクセス許可の影響を受けるように、他のすべてのアクセス許可が上書きされることに注意してください。

編集:コメントをありがとう、少し説明を追加しました。

于 2009-04-06T06:25:03.323 に答える