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删除记录后,会显示messagebox错误(请通过此链接下载错误消息图片--> http://www.4shared.com /photo/FgUODfoW/error_messagebox.html?)任何人请帮助我。

PS。这就是我构建项目的方式。

  1. 通过右键单击打开 Visual Studio2010 并选择“以管理员身份运行”。
  2. 打开我的项目
  3. “文件”>“添加”>“新项目”
  4. 在“添加新项目”窗口中,选择“其他项目类型”>“设置和部署”>“Visual Studio 安装程序”选择“设置项目”
  5. 在“文件系统”选项卡中,右键单击“应用程序文件夹”>“添加”>“项目输出...”
  6. 在“文件系统”选项卡中,右键单击“应用程序文件夹”>“添加”>“文件...”,然后选择我的 Microsoft Access 2007 文件。
  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,则在安装应用程序后,转到安装目录并右键单击可执行文件。单击“以管理员身份运行”,现在尝试删除记录。这次一定会成功的。

在任何操作系统中工作的替代方法 向本地系统用户 (MYPC\Users) 提供修改权限,然后重试。它会起作用的。

于 2012-10-25T11:35:56.637 回答