求助各位大神,C#能够更新DataGridView,但是不能更新Access数据库

通过sql语句insert into插入数据,代码正常运行,在DataGridView能够显示增加的数据,但是Access数据库没有更新,是什么原因啊?求救啊各位大神

    public void updatecon() // 写入并更新数据
    {
        OleDbCommand incmd;
        OleDbDataAdapter inda;
        DataSet inds;

        string id = textBox2.Text;
        string keyname = textBox3.Text;
        string username = textBox4.Text;
        string tel = textBox5.Text;
        string time = textBox6.Text;

        bool userempty = (username.Length == 0);
        bool telempty = (tel.Length == 0);
        if (userempty == true || telempty == true)
        {
            MessageBox.Show("请输入姓名和电话!");
        }
        else
        {
            try
            {
                tempcon.Open();

            string insql = "insert into [UserInfo](ID,KeyName,[UserName],[Tel],[Time]) values ('" + id + "','" + keyname + "','" + username + "','" + tel + "','" + time + "')";  //选择用户数据表
            //string insql = "select * from UserInfo";  //选择数据表
            incmd = new OleDbCommand(insql, tempcon);

            incmd.ExecuteNonQuery();  //执行
                            }
                            catch (Exception a)
            {
                throw a;
            }
                            tempcon.Close();
    }

图片说明

5个回答

一个是检查throw a那里,有没有丢出异常,一个是tempcon的连接字符串是什么,更新的数据库是不是你期望的那个。

aug4061
aug4061 把数据库路径改成绝对路径就可以了,哈哈,谢谢@caozhy
接近 4 年之前 回复
aug4061
aug4061 没有异常,tempcon连接的数据库没有问题,执行insert语句不是直接对数据库进行操作了吗?DataGridView能显示出来的东西不是ACCESS数据库里面的东西吗?
接近 4 年之前 回复

tempcon.Open(); 移到 incmd.ExecuteNonQuery(); //执行直接前面看看

aug4061
aug4061 试了下,效果是一样的
接近 4 年之前 回复

你点击保存记录的时候发生了什么事情,贴出来看看 ,在语句“tempcon.Open();” 这打个断点,调试下。

感谢各位,原来是数据库路径的问题,改成Data Source=D:\visual studio 2013\Projects\NFC\nfc.accdb这种绝对路径就可以了。我把ACCESS数据库直接放在工程文件夹里面,之前用的是Data Source=nfc.accdb,程序也能找到数据库,但是不能把数据写进去,有大神知道这两种方式的区别吗?

调试输出下try ()cathc{
//看下输出的具体是什么?是不是你的修改sql 有问题啊
}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐