VS2008中C#操作Access数据库,网上下载了一个类,可以正常连接,读取数据,但是插入删除操作似乎有问题,以下是部分代码:数据库类:
namespace AccessDb
{
    public class AccessDbClass
    {
        public AccessDbClass(string Dbpath)
        {
            ConnString = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=";
            ConnString += Dbpath;
            Conn = new OleDbConnection(ConnString);
            Conn.Open();
        }  
           public bool ExecuteSQLNonquery(string SQL)
        {
            OleDbCommand cmd = new OleDbCommand(@"DELETE FROM student", Conn);
            try
            {
                cmd.ExecuteNonQuery();
                return true;
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
                
                return false;
            }
        }
    }
}
调用代码:AccessDbClass mydb = new AccessDbClass("test.mdb");
if (mydb.ExecuteSQLNonquery(@"Delete * from student"))
            {
                MessageBox.Show("OK");
            }
            else
            {
                MessageBox.Show("FALSE"); 
            }
    
            //关闭数据库
            mydb.Close();显示返回值是正确的,带式数据库中的数据却没有被删除,请各位指点一下。

解决方案 »

  1.   

    test.mdb
    如果运行程序时,你的数据库放在当前目录下,还可以,否则要传入全路径的数据库文件名。另外你的ExecuteSQLNonquery写的有问题,不管传入什么sql语句,都是执行删除student表的操作:
    OleDbCommand cmd = new OleDbCommand(@"DELETE FROM student", Conn);所以你的这里传进去的sql没有用:
    mydb.ExecuteSQLNonquery(@"Delete * from student")
      

  2.   


    谢谢回答,忘了改回代码了:
    OleDbCommand cmd = new OleDbCommand(@"DELETE FROM student", Conn);应该是OleDbCommand cmd = new OleDbCommand(SQL,Conn);这个是没问题的,我就是想要删除student表里的数据试验一下,但是就是没有成功啊。
      

  3.   

    这个应不是vs2008的原因!
    vs在调试程序的时候,会自动把一份最新的mdb拷贝到debug目录,所以你删除完后,直接看debug目录下的mdb,应该已生效!
    ----------
    三易通软件(三易通服装进销存,三易通服装进销存软件,三易通服装进销存管理软件,三易通服装进销存管理系统,三易通服装店软件,三易通服装店管理软件,三易通服装店管理系统,三易通服装销售软件,三易通服装管理软件,三易通服装销售管理软件,三易通服装销售管理系统,三易通服装零售管理软件,三易通服装零售管理系统,三易通服装店收银软件)http://www.3etsoft.cn