Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OLEDB参数插入异常_C#_Ms Access 2007_Oledb_Jet_Oledbcommand - Fatal编程技术网

C# OLEDB参数插入异常

C# OLEDB参数插入异常,c#,ms-access-2007,oledb,jet,oledbcommand,C#,Ms Access 2007,Oledb,Jet,Oledbcommand,尝试使用参数将数据插入Access数据库时出现奇怪错误。我遇到的问题是:- thisCommand.CommandText = "INSERT INTO Events (Venue_ID, Date_Start, Date_End, Time_Start, Time_End, Name, Description, Event_Type, Buy_Tickets_URL) VALUES (@VenID, @DStart, @DEnd, @evTime, @evTim

尝试使用参数将数据插入Access数据库时出现奇怪错误。我遇到的问题是:-

                thisCommand.CommandText = "INSERT INTO Events (Venue_ID, Date_Start, Date_End, Time_Start, Time_End, Name, Description, Event_Type, Buy_Tickets_URL) VALUES (@VenID, @DStart, @DEnd, @evTime, @evTime, @Name, @Des, @EvType, @SysUrl);";

                //Other Parameters already inserted here
                string desc = GetDesc(rec.EvName);
                thisCommand.Parameters.AddWithValue("@Des", desc);
                thisCommand.ExecuteNonQuery();

其他参数都不会导致问题,但在尝试向描述字段插入数据时,我收到一个数据库异常,表示该字段太小,无法接受数据量。问题是,我的程序在抛出错误时只尝试插入3个字符,而描述字段是一个备注,因此最多可以容纳65000多个字符。在CommandText中手动插入值时,一切正常,因此必须与参数属性有关

也许您需要在描述中添加大括号<代码>[说明]

并更改参数,例如:

 thisCommand.CommandText = "INSERT INTO Events (Venue_ID, Date_Start, Date_End, Time_Start, Time_End, Name, [Description], Event_Type, Buy_Tickets_URL) VALUES (@VenID, @DStart, @DEnd, @evTime, @evTime, @Name, @Des, @EvType, @SysUrl);

            //Other Parameters already inserted here
            string desc = GetDesc(rec.EvName);
           // thisCommand.Parameters.AddWithValue("@Des", desc);
            thisCommand.Parameters.Add("@Des", OleDbType.VarChar, 6000).Value = desc;
            thisCommand.ExecuteNonQuery();

关于

参数名称仅是您的指南,例如,在运行时,请注意,所有参数都具有相同的名称!还请注意,保留字名称由方括号转义

    thisCommand.CommandText = "INSERT INTO Events (Venue_ID, Date_Start, " +
    "Date_End, [Name], Description, Event_Type, Buy_Tickets_URL) " +
    "VALUES (@VenID, @DStart, @DEnd, @Name, @Des, @EvType, @SysUrl);";


    thisCommand.Parameters.AddWithValue("@Des", 1);
    thisCommand.Parameters.AddWithValue("@Des", DateTime.Now.Date);
    thisCommand.Parameters.AddWithValue("@Des", DateTime.Now.Date);
    thisCommand.Parameters.AddWithValue("@Des", "abc");
    thisCommand.Parameters.AddWithValue("@Des", "abc");
    thisCommand.Parameters.AddWithValue("@Des", 1);
    thisCommand.Parameters.AddWithValue("@Des", "abc");
保留字


说明不是或中的保留字,但名称是。我想你应该修改这个答案。插入三个字符没有问题,但是参数必须按正确的顺序列出。在您的示例中,您只显示了一个参数,其他参数是否按命令文本中的顺序排列?名称可以很好地插入到数据库中,只有尝试插入到“描述”字段时,我才能得到一个例外。我运行了下面发布的示例代码,它对我有效。我不明白为什么你不能插入到描述中,除非其中一个参数出现了问题。只是看到顺序有点偏离,不知道参数必须按顺序设置谢谢!参数名称是不相关的,在您拥有的场景中不能与MS Access一起使用,您可以同样轻松地使用吗?作为@VenID。最重要的是顺序。名称作为保留字(名称是保留字)没有问题,但指出必须按顺序添加参数(在对我的原始问题的评论中),这样才是最好的答案。