我要通过ado.net往数据库插入一条记录,sql如下:
insert into tsys_user(userid,username,loginname,createtime,schoolid, password,email,phone,mobile,statusid,sex,birthday,address,description,image,isadmin,classid,roleid,clientres)values(100, '测试先生','test','2008-02-27 13:53:22',202,'password','[email protected]','075526551139','13510070123',1,1,'2008-05-01','深圳','为什么入不了ACCESS','',0,1,23,'')
但是执行的时候,总提示如下错误:
INSERT INTO 语句的语法错误。
在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
在 System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
在 System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
在 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
在 System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
在 FingerLib.DBHelper_OleDb.ExecuteSql(String SQLString) 位置 E:\netproject\指纹\FingerLib\DBHelper_OleDb.cs:行号 68 这个类如下: namespace FingerLib
{
public class DBHelper_OleDb
{
private static string connectionString;
static DBHelper_OleDb()
{
string EPath = Application.ExecutablePath;
string CurrntPath = EPath.Substring(0, EPath.LastIndexOf(@"\") + 1);
connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e:\\jyt.mdb";
}
public static int ExecuteSql(string SQLString)
{
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
using (OleDbCommand cmd = new OleDbCommand(SQLString, connection))
{
try
{
connection.Open();
int rows = cmd.ExecuteNonQuery();
return rows;
}
catch (Exception e)
{
connection.Close();
//MessageBox.Show(e.Message + "\r\n" + e.StackTrace);
Logger.LogInfo(e.Message + "\r\n" + e.StackTrace);
throw new Exception(e.Message);
}
}
}
}
}
}
可是这个sql,我在access的sql视图里面执行,就可以插入进去,不报任何错误,请各位大大帮我看看,非常感谢!!
insert into tsys_user(userid,username,loginname,createtime,schoolid, password,email,phone,mobile,statusid,sex,birthday,address,description,image,isadmin,classid,roleid,clientres)values(100, '测试先生','test','2008-02-27 13:53:22',202,'password','[email protected]','075526551139','13510070123',1,1,'2008-05-01','深圳','为什么入不了ACCESS','',0,1,23,'')
但是执行的时候,总提示如下错误:
INSERT INTO 语句的语法错误。
在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
在 System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
在 System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
在 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
在 System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
在 FingerLib.DBHelper_OleDb.ExecuteSql(String SQLString) 位置 E:\netproject\指纹\FingerLib\DBHelper_OleDb.cs:行号 68 这个类如下: namespace FingerLib
{
public class DBHelper_OleDb
{
private static string connectionString;
static DBHelper_OleDb()
{
string EPath = Application.ExecutablePath;
string CurrntPath = EPath.Substring(0, EPath.LastIndexOf(@"\") + 1);
connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e:\\jyt.mdb";
}
public static int ExecuteSql(string SQLString)
{
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
using (OleDbCommand cmd = new OleDbCommand(SQLString, connection))
{
try
{
connection.Open();
int rows = cmd.ExecuteNonQuery();
return rows;
}
catch (Exception e)
{
connection.Close();
//MessageBox.Show(e.Message + "\r\n" + e.StackTrace);
Logger.LogInfo(e.Message + "\r\n" + e.StackTrace);
throw new Exception(e.Message);
}
}
}
}
}
}
可是这个sql,我在access的sql视图里面执行,就可以插入进去,不报任何错误,请各位大大帮我看看,非常感谢!!
日期型的字段是用##来表示,不用''
access要将他的写入权限放开就可以了
我试着将'2008-3-2 23:23:12'换成了#2008-3-2 23:23:12#,但还是一样的报错 奇怪的就是这个sql,直接在access的设计视图里面可以直接入库。并通过ado.net也可以插入到sqlserver,但就是插入access报错
应该是放开了,因为我在这个文件里,还有其他的表,字段比这个少,大概1半的样子,就可以将数据插入进去
请问是不是access做了什么其他的限制呢?
你不是有二个时间字段的吗.都要改成#
是sql中的insert into(....里有password和image,应该写成insert into([password],[image]),可能是access关键字的原因
那个日期的的话,也可以用'',不一定要## 谢谢大家的捧场!
1.你的这个sql放到数据库中先执行一下,看是否正确,
2.如果不是sql语句的错误,你可将你的代码在你认为有疑义的地方设置断点,或者是逐语句调试一下,看是到哪的错误