日期:2014-05-18  浏览次数:20386 次

请帮看看下面的ASP.NET数据保存程序为什么不能执行?
程序功能:往Price表中插入或修改一条纪录(如果有2007-8-8日某商品价格,则修改,没有,则新增)
string   StrStampNO;
StrStampNO=e.Item.Cells[5].Text;
string   CnnString= "Provider=Microsoft.Jet.OLEDB.4.0;Data   Source= "+Server.MapPath( "Stamp.MDB ");  
OleDbConnection   cnn   =   new   OleDbConnection(CnnString);  
StringBuilder   Sb=new   StringBuilder( "Select   *   from   Price   Where   StampNO= ");
Sb.Append(StrStampNO);
Sb.Append( "   And   Date= '2007-8-8 ' ");

DataSet   Ds=new   DataSet();
OleDbDataAdapter   Adapter=new   OleDbDataAdapter(Sb.ToString(),cnn);
OleDbCommandBuilder   Cb=new   OleDbCommandBuilder(Adapter);
Adapter.Fill(Ds, "Price ");
DataRow   Dr;
Boolean   IsNew=false;
if   (Ds.Tables[ "Price "].Rows.Count==0){
Dr=Ds.Tables[ "Price "].NewRow();
Dr[ "StampNo "]=Convert.ToInt32(StrStampNO);
Dr[ "Date "]=txtDate.Text;
IsNew=true;
}else
Dr=Ds.Tables[ "Price "].Rows[0];
Dr[ "KP "]=30;
Dr[ "SP "]=30;
Dr[ "ZG "]=30;
Dr[ "ZD "]=30;
if   (IsNew)
Ds.Tables[ "Price "].Rows.Add(Dr);
Adapter.Update(Ds, "Price ");


运行结果:
“/”应用程序中的服务器错误。
--------------------------------------------

INSERT   INTO   语句的语法错误。  
说明:   执行当前   Web   请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。  

异常详细信息:   System.Data.OleDb.OleDbException:   INSERT   INTO   语句的语法错误。

源错误:  

生成此未处理异常的源代码只能在调试模式中进行编译时显示。若要启用该功能,请执行以下步骤之一,然后请求   URL:

1.   在生成错误的文件的顶部添加一个“Debug=true”指令。示例:

    <%@   Page   Language= "C# "   Debug= "true "   %>

或者:

 


------解决方案--------------------
你的语句呢?报的是INSERT INTO 语句的语法错误。都没看见你的INSERT INTO 语句
------解决方案--------------------
OleDbCommandBuilder 这东西我也只是在winform时用过...web一般很少用到这东西的
直接换成OleDbCommand来执行插入语句..试试...
------解决方案--------------------
Dr[ "Date "]=txtDate.Text;
==========================
有个字段叫Date,是Access的关键字,看看是不是这里的原因(改了字段名试一下)
------解决方案--------------------
没准儿让楼上的说中了:)
------解决方案--------------------
amandag(高歌) ( ) 信誉:98 2007-08-09 17:09:58 得分: 0


Dr[ "Date "]=txtDate.Text;
==========================
有个字段叫Date,是Access的关键字,看看是不是这里的原因(改了字段名试一下)


还可能是,Date是时间类型或者其他的什么.我记得Access时间字段要加#的.


Dr[ "Date "]= "# "+txtDate.Text+ "# ";