我建了一个产品实体类
TProductEntity pd=new TProductEntity();
pd.ProductMenuId     //产品所属目录编号
pd.ProductName       //产品名称
pd.ProductImage      //产品图片
pd.Description       //产品介绍
pd.UnitPrice         //产品售货单价
pd.AddProductTime    //添加时间(非空)
public void AddNewProduct(TProductEntity pd)
{
try
{
    string sql = String.Format("Insert into tbl_Product(PT_ClassId_Nr,PT_Nm,PT_Pic,PT_Desc,PT_UntPr_Nr,PT_Time_Dt)values(@Id,@Name,@Pic,@Desc,@UPr,"+DateTime.Now+")");
    OleDbCommand cmd = new OleDbCommand();
    cmd.CommandText = sql;
    cmd.Parameters.Add("@Id", OleDbType.Variant).Value = pd.ProductMenuId;
    cmd.Parameters.Add("@Name", OleDbType.VarChar, 40).Value = pd.ProductName;
    cmd.Parameters.Add("@Pic", OleDbType.VarChar, 40).Value = pd.ProductImage;
    cmd.Parameters.Add("@Desc", OleDbType.VarChar, 40).Value =   pd.Description;
    cmd.Parameters.Add("@UPr", OleDbType.Variant).Value = pd.UnitPrice;
    TDataAccessor.DataLayer.QueryStoredProcedure(cmd, 0);
}
catch (OleDbException odbex)
{
    throw new Exception("查询系统配置失败:数据库错误——" +
    odbex.Message);
}
catch (Exception ex)
{
    throw new Exception("查询系统配置失败:未知错误——" +
    ex.Message);
}
}
运行后提示:数据库错误——查询值的数目与目标字段中的数目不同。。
请问sql语句这样写对吗?
要怎么写......谢谢帮忙

解决方案 »

  1.   

    "+DateTime.Now+" 改为 '"+DateTime.Now+"' 试一试。
      

  2.   

    哦,你用存储过程的话应该为AddProductTime字段定义一个变量。
    string sql = String.Format("Insert into tbl_Product(PT_ClassId_Nr,PT_Nm,PT_Pic,PT_Desc,PT_UntPr_Nr,PT_Time_Dt)values(@Id,@Name,@Pic,@Desc,@UPr,@Date)");
    OleDbCommand cmd = new OleDbCommand();
    cmd.CommandText = sql;
    cmd.Parameters.Add("@Id", OleDbType.Variant).Value = pd.ProductMenuId;
    cmd.Parameters.Add("@Name", OleDbType.VarChar, 40).Value = pd.ProductName;
    cmd.Parameters.Add("@Pic", OleDbType.VarChar, 40).Value = pd.ProductImage;
    cmd.Parameters.Add("@Desc", OleDbType.VarChar, 40).Value =   pd.Description;
    cmd.Parameters.Add("@UPr", OleDbType.Variant).Value = pd.UnitPrice;
    cmd.Parameters.Add("@Date", OleDbType.Variant).Value = DateTime.Now;
    这样应该正确了。
      

  3.   

    谢谢
    问题已经解决了``string sql = "Insert into tbl_Product(PT_ClassId_Nr,PT_Nm,PT_Pic,PT_Desc,PT_UntPr_Nr,PT_Time_Dt)values(@Id,@Name,@Pic,@Desc,@UPr,@Time)";                OleDbCommand cmd = new OleDbCommand();
                    cmd.CommandText = sql;
                    cmd.Parameters.Add("@Id", OleDbType.Variant).Value = pd.ProductMenuId;
                    cmd.Parameters.Add("@Name", OleDbType.VarChar, 40).Value = pd.ProductName;
                    cmd.Parameters.Add("@Pic", OleDbType.VarChar, 40).Value = pd.ProductImage;
                    cmd.Parameters.Add("@Desc", OleDbType.VarChar, 40).Value = pd.Description;
                    cmd.Parameters.Add("@UPr", OleDbType.Variant).Value = pd.UnitPrice;
                    cmd.Parameters.Add("@Time", OleDbType.Variant).Value = DateTime.Now;
                    TDataAccessor.DataLayer.QueryStoredProcedure(cmd, 0);