想往ACCESS数据库里添加数据,代码如下,能运行,但是结果就是不能插入到数据库里,请高手帮忙看下:
我建了一个公共类dbClass,其中有一个公共方法是专门用来连接数据库的
public class dbClass
    {
       public OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=db1.accdb");
    }
按钮的代码如下:
private void button1_Click_1(object sender, EventArgs e)
        {
            if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "" || textBox4.Text == "" || textBox5.Text == "" || textBox6.Text == "")
            {
                MessageBox.Show("输入完整的学生信息", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            else
            {
                DataSet ds = new DataSet();
                //OleDbDataAdapter da = new OleDbDataAdapter();
                insert.myConnection.Open();
                string sqls = "SELECT * FROM 书籍信息 WHERE 书籍编号='" + textBox1.Text.Trim() + "'";
                OleDbDataAdapter da = new OleDbDataAdapter(sqls, insert.myConnection);
                da.Fill(ds);
                if (ds.Tables[0].Rows.Count > 1)
                {
                    MessageBox.Show("该书籍编号已存在", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    if (MessageBox.Show("确认添加?", "信息提示", System.Windows.Forms.MessageBoxButtons.YesNo, System.Windows.Forms.MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
                    {
                        string sql1, sql2, sql3;
                        sql1 = "INSERT INTO 书籍信息(书籍编号,书籍名称,出版社,作者,状态,所在位置)";
                        sql2 = "VALUES('" + textBox1.Text.Trim() + "','" + textBox2.Text.Trim() + "','" + textBox3.Text.Trim() + "','" + textBox4.Text.Trim() + "','" + textBox5.Text.Trim() + "','" + textBox6.Text.Trim() + "')";
                        sql3 = sql1 + sql2;
                        dbClass cons = new dbClass();
                        OleDbCommand cmd = new OleDbCommand();
                        cmd.CommandText = sql3;
                        try
                        {
                            //cons.Open();
                            cons.myConnection.Open();
                            cmd.ExecuteNonQuery();
                        }
                        catch { }
                        finally
                        {
                            cons.myConnection.Close();
                            cons.myConnection.Dispose();
                            cmd.Dispose();
                        }
                        MessageBox.Show("信息保存成功", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        string s = "SELECT * FROM 书籍信息";
                        OleDbDataAdapter da1 = new OleDbDataAdapter(s, insert.myConnection);
                        da1.Fill(ds);
                        if (ds.Tables[0].Rows.Count > 1)
                        {
                            dataGridView1.DataSource = ds.Tables[0];
                        }                    }
                }
            }
        }

解决方案 »

  1.   

    再补充一个问题:我在ACCESS数据库上直接修改了一些数据,然后在运行原来的程序,第一次的确是显示的我修改了之后的数据,但好像第二次就还是原来的那些数据了。我再进ACCESS里看,结果我修改的那些全部没了,仍是以前的数据,这是怎么回事?
      

  2.   

    你在插入之前,设个断点看看你的sql语句
      

  3.   

    没插成功可能出错了,在catch里面把错误弄出来,不要屏蔽
      

  4.   

    是不是工程编译后bin\debug下的数据库被覆盖了。
      

  5.   

    Data Source=db1.accdb
    数据库路径不对
      

  6.   

    可能你没有UPDATE,至修改了对象,没有修改持久层的东西。
      

  7.   

    Access?我们招聘数据库方面开发人员时,时不再考虑关系数据库思路,现在需要的是面向对象/文档的思路,例如是否熟悉MongoDb的开发应用思路。
      

  8.   

    执行前先打印SQL语句,查看对应字段格式是否正确。
      

  9.   

    加断点,抓取access要执行的语句,再一个就是看CATCH抓到的是什么错误。
      

  10.   

    你可将SQL语句在数据库中运行一下试试,看看是那里出错了呀
      

  11.   

    先判断SQL语句的是否正确,还有先别用catch捕获,不然找不到错误
      

  12.   

    TO:LZ
    try
    {
        ......
    }
    // 老大,
    // 你这里都不 throw 的啊?但至少 MessageBox 一下吧?!
    // 否则 exception 直接吞没啊!你看代码运行怎么也看不出来的啊!
    catch { }
    finally
    {
        ......
    }
      

  13.   

    if (ds.Tables[0].Rows.Count > 1)
    错了吧!当有一行是,已经有这本书了,怎么你还添加,改为大于0或大于等于1吧!
    还有后面的显示判断的也跟着改为大于0或大于等于1
      

  14.   

    加段点,把最总Sql语句放数据库运行一下就OK啦
      

  15.   

    1.输出SQL语句看一下
    2.你的数据类型正确吗?