使用Access数据库建立项目成功,可以搜索数据但不能删除记录

时间:2012-10-25 09:46:56

标签: c# database visual-studio-2010

我只学习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. 通过右键单击打开Visual Studio2010并选择“运行方式” 管理员”。
  2. 打开我的项目
  3. '文件'> '添加'> '新项目'
  4. 在“添加新项目”窗口中,选择“其他项目类型”>“设置和部署”> 'Visual Studio Installer'选择'Setup Project'
  5. 在“文件系统”标签中,右键点击“应用程序文件夹”> '添加'> '项目输出......'
  6. 在“文件系统”标签中,右键点击“应用程序文件夹”> '添加'> '文件...'并选择我的Microsoft Access 2007的文件。
  7. 在“解决方案资源管理器”窗口中,右键单击我的项目并选择“构建” 这种方式可以正确地将数据库导入我的项目吗?
  8. 以下是代码。

    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");
    
    
            }
        }
    }
    

1 个答案:

答案 0 :(得分:1)

错误是由于文件夹权限。如果您使用的是Window 7,则在安装应用程序后,转到已安装的目录并右键单击可执行文件。单击“以管理员身份运行”,然后尝试删除记录。这次会成功。

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