从 ASP.NET 向 MSAcess 添加记录
Posted
技术标签:
【中文标题】从 ASP.NET 向 MSAcess 添加记录【英文标题】:Adding record to MSAcess from ASP.NET 【发布时间】:2011-12-10 18:24:11 【问题描述】:我使用 ASP.NET 处理 mysql。今天才开始尝试MSAccess中的SQL命令。我尝试了以下代码,但我收到了未处理的异常错误。请任何人检查以下内容并告诉我错误在哪里。
string ConnStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\project\Pages\db.mdb";
OleDbConnection MyConn = new OleDbConnection(ConnStr);
OleDbCommand cmd = new OleDbCommand();
cmd = new OleDbCommand("INSERT INTO accounts(email, password)VALUES(?, ?)", MyConn);
cmd.Parameters.Add("email", OleDbType.VarChar).Value = "val1";
cmd.Parameters.Add("password", OleDbType.VarChar).Value = "val2";
MyConn.Open();
cmd.ExecuteNonQuery();
MyConn.Close();
我创建了一个 Access 数据库,其中包含表帐户和字段 ID、电子邮件和密码。
我得到的确切错误是(但我相信我的语法是正确的)
Syntax error in INSERT INTO statement.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.OleDb.OleDbException: Syntax error in INSERT INTO statement.
Source Error:
Line 22: cmd.Parameters.Add("password", OleDbType.VarChar).Value = "val2";
Line 23: MyConn.Open();
Line 24: cmd.ExecuteNonQuery();
Line 25: MyConn.Close();
Line 26:
【问题讨论】:
您是否在数据库表中将 FieldID 设置为 Pk 和 AutoIncrement... @m.qayyum - 我想这一切都会默认自动完成。 【参考方案1】:“密码”是保留字。把它放在括号内。
http://support.microsoft.com/kb/321266
cmd = new OleDbCommand("INSERT INTO accounts(email, [password])VALUES(?, ?)", MyConn);
【讨论】:
但是我的数据库没有密码。 并且数据库连接工作正常。我试过 Connection.Open();并通过异常处理关闭并通过测试。 @KarsM - 查看我发布的代码 sn-p;在 SQL 语句中使用保留字时,需要用括号括起来。 对于每个数据库,我们应该在使用 word 密码时使用括号吗?还有其他词有这种特殊情况吗? 我发布的链接列出了 Access 使用的所有保留字。如果您怀疑对象名称是您可能定位的任何数据库中的保留字,那么最好将对象名称括在括号中,这样您的查询将更加可移植。以上是关于从 ASP.NET 向 MSAcess 添加记录的主要内容,如果未能解决你的问题,请参考以下文章
由于权限问题,从 ASP.NET 应用程序向 TFS 2010 添加工作项失败
ASP.Net Core 3.1 - 从控制器向部分视图模态传递值?