我刚刚学习 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删除记录后,会显示messagebox错误(请通过此链接下载错误消息图片--> http://www.4shared.com /photo/FgUODfoW/error_messagebox.html?)任何人请帮助我。
PS。这就是我构建项目的方式。
- 通过右键单击打开 Visual Studio2010 并选择“以管理员身份运行”。
- 打开我的项目
- “文件”>“添加”>“新项目”
- 在“添加新项目”窗口中,选择“其他项目类型”>“设置和部署”>“Visual Studio 安装程序”选择“设置项目”
- 在“文件系统”选项卡中,右键单击“应用程序文件夹”>“添加”>“项目输出...”
- 在“文件系统”选项卡中,右键单击“应用程序文件夹”>“添加”>“文件...”,然后选择我的 Microsoft Access 2007 文件。
- 在“解决方案资源管理器”窗口中,右键单击我的项目并选择“构建”这样可以将数据库正确导入我的项目吗?
下面是代码。
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");
}
}
}