.Net Windows 应用程序使用 OLEDB 和 Access

Posted

技术标签:

【中文标题】.Net Windows 应用程序使用 OLEDB 和 Access【英文标题】:.Net Windows application using OLEDB with Access 【发布时间】:2011-02-25 12:41:21 【问题描述】:

我正在尝试在 Windows 应用程序中使用 OLEDB 在 MS Access DB 中插入一条记录。

我收到一个错误“sql 语句末尾缺少分号”,sql insert 语句中没有语法错误。

我的代码

这是我正在使用的插入语句:

INSERT INTO Student
VALUES ('SRI-10-101','001','guru','30/05/2010 12:00:00 AM','','','','','','','600028','','','','','','','30/05/2010 11:25:44 AM','');

连同代码:

conn = this.GetConnection();// which returns Connection object
tran = conn.BeginTransaction();
OleDbCommand cmd = conn.CreateCommand();
cmd.Connection = conn; 
cmd.CommandText = strQuery;// Insert statement
cmd.CommandType = CommandType.Text;
cmd.Transaction = tran;
cmd.ExecuteNonQuery();
tran.Commit();

我用分号试过了,还是报错;

谢谢

【问题讨论】:

你能发布你的代码吗?没有它,将很难诊断您的问题。 dude SQL 语句或您正在使用的命令在哪里? 请您发布 SQL 语句和/或代码 sn-p 吗? 所以您实际上可能在 sql 语句的末尾缺少了一个分号 :) 发布您的代码,以便每个人都可以查看并找到错误:) 问题是您在 sql 语句的末尾缺少一个分号。应该很容易修复:-) 【参考方案1】:

您似乎想将您的 strQuery 设置为您的插入语句的值。

根据您的代码,它应该如下所示:

string strQuery = "INSERT INTO Student
            VALUES ('SRI-10-101','001','guru','30/05/2010 12:00:00 AM','','','','','','','600028','','','','','','','30/05/2010 11:25:44 AM','')";

与往常一样,您应该验证您已连接并默认使用正确的数据库(或在您的表名之前明确指定它(即 MyAwesomeDatabase.dbo.Student)。

最后看起来您还试图将数字作为字符数组('001' 或 '600028')插入,如果数据库中的字段是数字类型,那么 SQL 更喜欢不带引号分隔符的数字。

祝你好运!

【讨论】:

以上是关于.Net Windows 应用程序使用 OLEDB 和 Access的主要内容,如果未能解决你的问题,请参考以下文章

SqlClient/OLEDB 驱动程序的连接字符串,如 jdbc:jtds 驱动程序?

microsoft.ace.oledb.12.0 提供程序未注册

Microsoft.Jet.OLEDB.4.0' 提供程序未在本地计算机上注册

在 MS Access 中保存来自 VB.Net Windows 窗体的数据时出现错误 System.Data.OleDb.OleDbException:“标准表达式中的数据类型不匹配”。

在.NET中使用访问(mdb)链接表与sql server时,oledb提供程序的替代方法是啥

Windows 10 无法识别“Microsoft.ACE.OLEDB.12.0”