日期:2014-05-17  浏览次数:20465 次

asp.net+access增加操作,小代码如下 标准表达式中数据类型不匹配
C# code

/// <summary>
        /// 增加公告信息
        /// </summary>
        /// <param name="e"></param>
        public static void addAnnouncement(Equipment e)
        {

            string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + System.Web.HttpContext.Current.Server.MapPath("设备管理_be.mdb");//ACCESS链接字符串
            OleDbConnection connAcc = new System.Data.OleDb.OleDbConnection(strConn);
            connAcc.Open();
            string sql = string.Format("INSERT INTO 公告管理 VALUES('{0}','{1}','{2}','{3}','{4}','{5}')",
                new OleDbParameter("发布人",e.发布人),
                new OleDbParameter("主题", e.主题),
                new OleDbParameter("发布时间", e.发布时间),
                new OleDbParameter("内容", e.内容),
                new OleDbParameter("响应情况", e.响应情况),
                new OleDbParameter("备注", e.备注)
           
            );
            OleDbCommand cmd = new OleDbCommand(sql, connAcc);
            
            cmd.ExecuteNonQuery();//这一步标准表达式中数据类型不匹配
            connAcc.Close();

        
        }
//是不是代码哪里写的有问题?



------解决方案--------------------
哥,这里面怎么又那么多中文!。。。
你把“e.发布时间”这个字段转换成字符串
Convert.ToString(e.发布时间)就ok了
建议以后代码中命名和数据库字段别用英文。。
------解决方案--------------------
你写的我怎么看不懂呢
------解决方案--------------------
探讨

你写的我怎么看不懂呢

------解决方案--------------------
扫一眼就知道有问题了。

access 的时间字段,必须要 格式化字符串才行,不能吧datetime类型传递进去。

如果数值型字段,被转为字符型也会出错。

估计 new OleDbParameter("发布人",e.发布人),会错。

e.发布人是int的话,INSERT INTO 公告管理 VALUES('{0}',就是错误的了。