微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

写入我的 Access 数据库时出现语法错误

如何解决写入我的 Access 数据库时出现语法错误

我在一个方法中得到了这段代码

string tableName = "messages_user-test";
                OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\janke\\source\\repos\\Unichat\\Unichat\\bin\\Debug\\history.accdb;Persist Security Info=False;");
                conn.open();
                OleDbCommand comm = new OleDbCommand();
                comm.Connection = conn;
                string writestring = "insert into " + tableName + " ([from],[to],[datetime],[message]) values (@from,@to,@datetime,@message);";
                Console.WriteLine(writestring);
                comm.CommandText = writestring;
                comm.Parameters.AddWithValue("@from",from);
                comm.Parameters.AddWithValue("@to",to);
                comm.Parameters.AddWithValue("@datetime",date);
                comm.Parameters.AddWithValue("@message",text);
                comm.ExecuteNonQuery();
                comm.dispose();
                conn.Close();

当我执行程序时,我在 comm.ExecuteNonQuery(); 处收到此错误

System.Data.OleDb.OleDbException: "Syntaxerror in INSERT INTO statement."

我对 OleDB 还很陌生,我已经阅读了数百个关于此错误的帖子,但没有任何效果我有用。

解决方法

  • 表名和字段名使用方括号

  • 可能是导致错误的日期(从、到、日期)值

  • 不要忘记添加 try..catch

  • 检查分析器以获取更多详细信息

     using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\janke\\source\\repos\\Unichat\\Unichat\\bin\\Debug\\history.accdb;Persist Security Info=False;"))
         {
             string strFeedback = "";
    
             string tableName = "messages_user-test";
             string writestring = string.Format("INSERT INTO [{0}] ([from],[to],[datetime],[message]) VALUES (@from,@to,@datetime,@message);",tableName);
    
             OleDbCommand comm = new OleDbCommand(writestring);                
             comm.Parameters.Add(new OleDbParameter("@from",from.ToString("yyyy-MM-dd")));
             comm.Parameters.Add(new OleDbParameter("@to",to.ToString("yyyy-MM-dd")));
             comm.Parameters.Add(new OleDbParameter("@date",date.ToString("yyyy-MM-dd HH:mm:ss")));
             comm.Parameters.Add(new OleDbParameter("@message",text));
             try
             {
                 strFeedback = comm.ExecuteNonQuery().ToString() + " record has been added successfully!";
             }
             catch (Exception ex)
             {
    
                 strFeedback = "ERROR: " + err.Message;
             }           
         }
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。