我只学习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。这就是我构建项目的方式。
以下是代码。
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");
}
}
}
答案 0 :(得分:1)
错误是由于文件夹权限。如果您使用的是Window 7,则在安装应用程序后,转到已安装的目录并右键单击可执行文件。单击“以管理员身份运行”,然后尝试删除记录。这次会成功。
在任何操作系统中工作的备用方法 向本地系统用户(MYPC \ Users)提供修改权限,然后重试。它会起作用。