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。これが私がプロジェクトを構築する方法です。
- 右クリックしてVisualStudio2010を開き、[管理者として実行]を選択します。
- プロジェクトを開く
- 'ファイル'>'追加'>'新しいプロジェクト'
- [新しいプロジェクトの追加]ウィンドウで、[その他のプロジェクトの種類]>[セットアップと展開]>[VisualStudioインストーラー]を選択します。[プロジェクトのセットアップ]を選択します。
- [ファイルシステム]タブで、[アプリケーションフォルダ]>[追加]>[プロジェクト出力...]を右クリックします。
- [ファイルシステム]タブで、[アプリケーションフォルダ]>[追加]>[ファイル...]を右クリックして、MicrosoftAccess2007のファイルを選択します。
- [ソリューションエクスプローラー]ウィンドウで、プロジェクトを右クリックして[ビルド]を選択します。この方法でデータベースをプロジェクトに正しくインポートできますか?
以下はコードです。
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");
}
}
}