| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 818 人关注过本帖
标题:一个数据库问题
只看楼主 加入收藏
huangcx
Rank: 1
等 级:新手上路
帖 子:64
专家分:0
注 册:2006-5-26
收藏
 问题点数:0 回复次数:11 
一个数据库问题
近来遇到一个很奇怪的问题,就是更新一个教师表的信息的时候,如果只更新前三个字段,就没有出错;如果再加一个字段,就说语法错误.
代码如下:
/////////修改教师信息
public boolean update_teacher(String id1,String id2,String name,String level,int dep_id)
{
conn=c.getConnection();
//String k="1";
boolean flag=false;
String sql="update teacher set teacherID='"+id2+"',name='"+name+"',departID='"+dep_id+"',level='"+level+"' where teacherID=?"; // 加上红色的代码就会出错
try{
preparedstatement = conn.prepareStatement(sql);
preparedstatement.setString(1,id1);
preparedstatement.executeUpdate();
conn.commit();
flag=true;
}catch ( SQLException e )
{
e.printStackTrace();
try
{
//回滚操作.
conn.rollback();
}
catch ( SQLException e1 )
{
e1.printStackTrace();
}
}
//关闭资源.
finally
{
try
{
if(preparedstatement!=null)
{
preparedstatement.close();
}
if(conn!=null)
{
conn.close();
}
}
catch ( SQLException e1 )
{
e1.printStackTrace();
}
}
return flag;
}
异常如下:
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] UPDATE 语句的语法错误。
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
at sun.jdbc.odbc.JdbcOdbc.SQLExecute(JdbcOdbc.java:3150)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.execute(JdbcOdbcPreparedStatement.java:214)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.executeUpdate(JdbcOdbcPreparedStatement.java:136)
at test.admin.teach_DAO.update_teacher(teach_DAO.java:247)
at test.admin.Modi_teach.doPost(Modi_teach.java:41)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:566)
麻烦各位高手能给个解答,问题究竟出在哪里?
ps:我用的是access数据库,教师表有五个字段,分别是teacherID,name,departID,psw,level

[此贴子已经被作者于2006-12-8 10:40:16编辑过]

搜索更多相关主题的帖子: 数据库 
2006-12-08 10:38
angeloc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:36
帖 子:1353
专家分:0
注 册:2006-11-21
收藏
得分:0 

去库里用sql语句试下看什么问题,先得查出是SQL语句问题还是程序问题


老牛明知夕阳晚,不用扬鞭自奋蹄; Angelo\'s BLOG
2006-12-08 11:04
一二三四五
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:856
专家分:0
注 册:2006-11-13
收藏
得分:0 

格式是否兼容,


hey,di va la
2006-12-08 12:15
huangcx
Rank: 1
等 级:新手上路
帖 子:64
专家分:0
注 册:2006-5-26
收藏
得分:0 
SQL语句和程序是没什么问题的,格式也是没问题的,但就是再加了一个更新字段就会出现错误,如果把String sql="update teacher set teacherID='"+id2+"',name='"+name+"',departID='"+dep_id+"',level='"+level+"'  where teacherID=?";换成String sql="update teacher set teacherID='"+id2+"',name='"+name+"',departID='"+dep_id+"'  where teacherID=?";就没什么问题,真的很不理解!

[此贴子已经被作者于2006-12-8 13:02:50编辑过]



以我平凡的天分和不平凡的毅力,可完成所有事!
2006-12-08 13:00
雪中抢碳
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-12-8
收藏
得分:0 
看看level是否为数字格式如果为数字格式则不用带+号
2006-12-08 13:38
Reejay
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2006-9-28
收藏
得分:0 
看看level的类型是否匹配,另外建议你用预编译(PreparedStatement)的形式会更好减少错误

仍记起温馨的一对手,始终给我照顾未变样 we don\'t wanna make it without you
2006-12-08 14:12
angeloc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:36
帖 子:1353
专家分:0
注 册:2006-11-21
收藏
得分:0 
以下是引用huangcx在2006-12-8 13:00:20的发言:
SQL语句和程序是没什么问题的,格式也是没问题的,但就是再加了一个更新字段就会出现错误,如果把String sql="update teacher set teacherID='"+id2+"',name='"+name+"',departID='"+dep_id+"',level='"+level+"' where teacherID=?";换成String sql="update teacher set teacherID='"+id2+"',name='"+name+"',departID='"+dep_id+"' where teacherID=?";就没什么问题,真的很不理解!

那你在level上找原因吧,比如类型不匹配拉,[level]等等。。。


老牛明知夕阳晚,不用扬鞭自奋蹄; Angelo\'s BLOG
2006-12-08 17:29
huangcx
Rank: 1
等 级:新手上路
帖 子:64
专家分:0
注 册:2006-5-26
收藏
得分:0 
level字段的格式跟前两个字段都是"text"格式,格式应该不存在什么问题,但就是找不出问题出在什么地方

以我平凡的天分和不平凡的毅力,可完成所有事!
2006-12-09 21:26
rainic
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2367
专家分:0
注 册:2005-8-9
收藏
得分:0 
Level加[]没??

2006-12-09 21:55
huangcx
Rank: 1
等 级:新手上路
帖 子:64
专家分:0
注 册:2006-5-26
收藏
得分:0 
以下是引用rainic在2006-12-9 21:55:03的发言:
Level加[]没??

为什么要加[]这个啊?


以我平凡的天分和不平凡的毅力,可完成所有事!
2006-12-10 01:05
快速回复:一个数据库问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030739 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved