none
access 2010 插入数据失败! RRS feed

  • 问题

  •                 string connectionString = @"Provider = Microsoft.ACE.OLEDB.12.0;Data Source = |DataDirectory|\DataBase\Database.accdb ";
                sql = "INSERT INTO EveryIssue VALUES (" 1012,1055,3695 ")";

    using (OleDbConnection connection = new OleDbConnection(connectionString))
                    {
                        connection.Open();
                        OleDbCommand command = new
                            OleDbCommand(queryString, connection);
                        command.ExecuteNonQuery();

                        if (connection != null)
                        {
                            connection.Close();
                        }
                    }

     

    程序执行时,顺利通过,但打开数据库一看,什么记录也没有。

    2010年8月13日 10:52

答案

  • 你好 lfj0912,

    小弟本身在家裡測試,環境是 VS 2010, Access 2007,

    結果是可以寫入的唷~~~但是 Connection String 得小改一下,我發現你的寫法比較像是給 ASP.NET 用的!!!

    小弟把剛剛測試的專案給打包了,您仔細的參考著吧~~~

    專案打包載點



    • 已标记为答案 lfj0912 2010年8月16日 4:49
    • 已编辑 DK. Da 2012年6月10日 2:20
    2010年8月14日 16:58
  • 晕死!原来vs2010 每次试运行时,都会 替换掉 测试目录 下的数据库,而不保存记录。

    • 已标记为答案 lfj0912 2010年8月16日 4:49
    2010年8月16日 4:48

全部回复

  • 你好

    以上的是你用的CODE 嗎?

    如果是的話queryString 應該要被 sql 取代

    不知道會不會是SQL 的問題

    E.G. SQL 應該是要用 ' SINGLE QUOTE ' 的 而不是 "Speech Mark"

    E.G. sql = "INSERT INTO EveryIssue VALUES ('1012,1055,3695 ')";

      sql = "INSERT INTO EveryIssue VALUES (" 1012,1055,3695 ")";

    using (OleDbConnection connection = new OleDbConnection(connectionString))
                    {
                        connection.Open();
                        OleDbCommand command = new
                            OleDbCommand(queryString , connection);
                        command.ExecuteNonQuery();

                        if (connection != null)
                        {
                            connection.Close();
                        }
                    }

     Please correct me if my concept is wrong


    Chi
    2010年8月13日 12:03
  • 谢谢您的答复!

             string sql = "INSERT INTO EveryIssue (aaa) VALUES (1012)";

    string connectionString = @"Provider = Microsoft.ACE.OLEDB.12.0;Data Source = |DataDirectory|\DataBase\Database.accdb ";

    using (OleDbConnection connection = new OleDbConnection(connectionString))
                    {
                        connection.Open();
                        OleDbCommand command = new
                            OleDbCommand(sql, connection);
                        command.ExecuteNonQuery();

                        if (connection != null)
                        {
                            connection.Close();
                        }
                    }

    不知道为什么,以上代码也是顺利执行完毕,但 access 查不到有新的记录。

    2010年8月14日 1:24
  • 你好 lfj0912,

    先在 command.ExecuteNonQuery(); 這一行做一下變化如下:

    int modifiedRecordsCount = command.ExecuteNonQuery();

    然後設個中斷點在這一行,看一下 modifiedRecordsCount 的值是不是 0 ~~~

     

    此外,你可以多做一個查詢的方法,將數據表 EveryIssue 的內容列出來看看......

    搞不好你有插入數據,但是搞錯數據庫了.....................


    小中中的學習筆記
    2010年8月14日 3:19
  • 谢谢您!如果用查询,可以查到 access2010 的 数据。

                    int x = command.ExecuteNonQuery();
                    if (x > 0)
                    {
                        MessageBox.Show(x.ToString());
                    }

    显示结果为 1

    2010年8月14日 3:30
  • 你好 lfj0912,

    所以就是有插入,但是你在 access 檔案中找不到新增的那一行對麼?

    這樣就有極大的可能是你開錯檔案了~~~~~



    • 已编辑 DK. Da 2012年6月10日 2:19
    2010年8月14日 3:33
  • 不会啊,access 里只有两个表,怎么会看错啊。

    那样的代码,以前在access 2003,可以写入,现在不知道为什么?

    您有安装 access 2010 吗?帮我测试下。

    2010年8月14日 3:35
  • 你好 lfj0912,

    我沒裝 2010 呀,2007 倒是有~

    但我想你該把 connectionString 改成這樣:

    string connectionString = @"Provider = Microsoft.ACE.OLEDB.12.0;Data Source = |DataDirectory|\DataBase\Database.accdb; ReadOnly=0";



    • 已编辑 DK. Da 2012年6月10日 2:19
    2010年8月14日 3:49
  • 那些代码,您在 2007 可以写入数据吗?

    改成這樣:

    string connectionString = @"Provider = Microsoft.ACE.OLEDB.12.0;Data Source = |DataDirectory|\DataBase\Database.accdb; ReadOnly=0";

    出错信息: 找不到可安装的 ISAM。

    2010年8月14日 3:58
  • 你好 lfj0912,

    小弟本身在家裡測試,環境是 VS 2010, Access 2007,

    結果是可以寫入的唷~~~但是 Connection String 得小改一下,我發現你的寫法比較像是給 ASP.NET 用的!!!

    小弟把剛剛測試的專案給打包了,您仔細的參考著吧~~~

    專案打包載點



    • 已标记为答案 lfj0912 2010年8月16日 4:49
    • 已编辑 DK. Da 2012年6月10日 2:20
    2010年8月14日 16:58
  • 谢谢您!

    按照您做的程序,在 ACCESS2010 中,测试如下:

    运行程序后,点击按钮,可以看到写入成功,并把它读取出来。

    关闭程序后,再次运行程序 ,在列表中就无法显示刚才插入的数据。

    用 access 打开 该表,只有一行的记录。后来插入的数据什么也没有看到。

    2010年8月14日 21:44
  • 运行程序后,点击按钮,可以看到写入成功,并把它读取出来。

    不要关闭程序,运行 access ,打开 该表,只有一行的记录。后来插入的数据什么也没有看到。

    2010年8月14日 21:47
  • 晕死!原来vs2010 每次试运行时,都会 替换掉 测试目录 下的数据库,而不保存记录。

    • 已标记为答案 lfj0912 2010年8月16日 4:49
    2010年8月16日 4:48
  • 你好 lfj0912,

    你怎麼不是發布之後再測呀?

    小弟也跟著暈了......  = ="



    • 已编辑 DK. Da 2012年6月10日 2:20
    2010年8月16日 7:09
  • 你好 lfj0912,

    你怎麼不是發布之後再測呀?

    小弟也跟著暈了......  = ="


    小中中的學習筆記


    很感谢您的热情和无私的奉献!

    在这风晴雨住的日子里,祝愿您天天开心!万事胜意!

    2010年8月16日 12:48