3

Visual Studio C#を2か月間学びました。最近、Microsoft Access 2007に接続してスムーズに実行できるコードを記述しました(データを表示でき、期待どおりにレコードを削除できます)。ただし、プロジェクトをビルドすると、データは表示されますが、レコードを削除できません(表示されます)。エラーメッセージボックス「アプリケーションで未処理の例外が発生しました。[続行]をクリックすると、アプリケーションはこのエラーを無視して続行を試みます。[終了]をクリックすると、アプリケーションはすぐに閉じます」)何が問題なのかわかりません。私は解決策のために多くの方法を試しましたが、まだ成功していません。プロジェクトを4shared.comにアップロードしますので、このリンクからダウンロードしてください-> http://www.4shared.com/zip/bxhZC3Wp/WindowsFormsApplication32.html

ダウンロード後、コード(ファイル名WindowsFormsApplication32)を開いて実行してみてください。3つのテキストボックスが表示されます。1と入力してbutton1をクリックすると、textbox2に名前が表示され、textbox3に都市が表示されます。次に、button2をクリックしてレコードを削除すると、レコードが正常に削除されることがわかります。次に、フォルダiii> Debugを開き、プログラム(ファイル名iii)をインストールして、プログラムを開きます(C:\ Program Files(x86)\ Default Company Name \ iiiにあります)。コードを実行するときと同じ方法で試すことができますが、button2をクリックしてレコードを削除すると、メッセージボックスエラーが表示されます(このリンクからメッセージエラーの画像をダウンロードしてください-> http://www.4shared.com /photo/FgUODfoW/error_messagebox.html?)誰か助けてください。

PS。これが私がプロジェクトを構築する方法です。

  1. 右クリックしてVisualStudio2010を開き、[管理者として実行]を選択します。
  2. プロジェクトを開く
  3. 'ファイル'>'追加'>'新しいプロジェクト'
  4. [新しいプロジェクトの追加]ウィンドウで、[その他のプロジェクトの種類]>[セットアップと展開]>[VisualStudioインストーラー]を選択します。[プロジェクトのセットアップ]を選択します。
  5. [ファイルシステム]タブで、[アプリケーションフォルダ]>[追加]>[プロジェクト出力...]を右クリックします。
  6. [ファイルシステム]タブで、[アプリケーションフォルダ]>[追加]>[ファイル...]を右クリックして、MicrosoftAccess2007のファイルを選択します。
  7. [ソリューションエクスプローラー]ウィンドウで、プロジェクトを右クリックして[ビルド]を選択します。この方法でデータベースをプロジェクトに正しくインポートできますか?

以下はコードです。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

namespace WindowsFormsApplication32
{
public partial class Form1 : Form
  {
    public Form1()
    {
        InitializeComponent();
    }
    private OleDbConnection connection;
    private OleDbDataAdapter adapter;

    private OleDbCommand command;
    private string sql;

    private void Form1_Load(object sender, EventArgs e)
    {
        string con = @"Provider=Microsoft.ACE.OLEDB.12.0;
                        Data Source=|DataDirectory|\bbb.accdb;
                        Persist Security Info=False;";
        connection = new OleDbConnection(con);
        if (connection.State == ConnectionState.Closed)
            connection.Open();
    }

    private void button1_Click(object sender, EventArgs e)
    {

        sql = "SELECT * FROM test WHERE id=" + textBox1.Text;

        command = new OleDbCommand(sql, connection);

        adapter = new OleDbDataAdapter(command);
        DataSet data = new DataSet();
        adapter.Fill(data, "abc");
        if (data.Tables["abc"].Rows.Count == 0) return;

        else
        {

            textBox2.Text = Convert.ToString(data.Tables["abc"].Rows[0]["Name"]);
            textBox3.Text = Convert.ToString(data.Tables["abc"].Rows[0]["City"]);
        }


    }

    private void button2_Click(object sender, EventArgs e)
    {
        DialogResult result = MessageBox.Show("are you sure to delete", "delete", MessageBoxButtons.OKCancel);
        if (result == DialogResult.Cancel) return;
        sql = "DELETE FROM test WHERE ID=" + textBox1.Text;
        command = new OleDbCommand(sql, connection);
        int r = (int)command.ExecuteNonQuery();
        if (r > 0)
        {
            MessageBox.Show("already delete");
            textBox1.Text = "";
            textBox2.Text = "";
            textBox3.Text = "";
        }
        else MessageBox.Show("error to delete");


        }
    }
}
4

1 に答える 1

1

エラーは、フォルダーのアクセス許可が原因です。Window 7 を使用している場合は、アプリケーションをインストールした後、インストールされたディレクトリに移動し、実行可能ファイルを右クリックします。「管理者として実行」をクリックして、レコードを削除してみてください。今度は成功します。

任意の OS で機能する代替方法 ローカル システム ユーザー (MYPC\Users) に変更権限を与えて、もう一度やり直してください。それが動作します。

于 2012-10-25T11:35:56.637 に答える