/**
* 删除指定记录
* @param fyear
* @param dataType
* @param fitemId
*/
public void remove(BigDecimal fyear, String dataType, int fitemId){
Connection conn = JdbcUtil.getConnection();
if(conn != null){
String sql = "delete from tmp_purchasing where fyear = ?and data_type = ? and fitemid = ?";
PreparedStatement ps = null;
try {
ps = conn.prepareStatement(sql);
ps.setBigDecimal(1,fyear);
ps.setString(2,dataType);
ps.setInt(3,fitemId);
(106) ps.executeUpdate();
}catch (SQLException e) {
e.printStackTrace();
}finally{
JdbcUtil.release(ps);
JdbcUtil.release(conn);
}
}
}一个很普通的删除方法,以前用同样的方法应用在Oracle或MySQL上绝对没问题。如今换了SQL Server 2005,这代码却失效了!并抛出异常!
----------------------------------------------------------------------------------------------------------
com.microsoft.sqlserver.jdbc.SQLServerException: 必须声明标量变量 "@P0and"。
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(Unknown Source)
at com.microsoft.sqlserver.jdbc.IOBuffer.processPackets(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.sendExecute(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteUpdate(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(Unknown Source)
at com.nissan.Service.remove(Service.java:106)
at com.nissan.util.Test.main(Test.java:26)
----------------------------------------------------------------------------------------------------------以前没用过SQL Server,现在做项目客户要用这个数据库就得用,可是这个问题从没遇到过,希望有经验的朋友告诉我怎么解决,先谢谢了!
* 删除指定记录
* @param fyear
* @param dataType
* @param fitemId
*/
public void remove(BigDecimal fyear, String dataType, int fitemId){
Connection conn = JdbcUtil.getConnection();
if(conn != null){
String sql = "delete from tmp_purchasing where fyear = ?and data_type = ? and fitemid = ?";
PreparedStatement ps = null;
try {
ps = conn.prepareStatement(sql);
ps.setBigDecimal(1,fyear);
ps.setString(2,dataType);
ps.setInt(3,fitemId);
(106) ps.executeUpdate();
}catch (SQLException e) {
e.printStackTrace();
}finally{
JdbcUtil.release(ps);
JdbcUtil.release(conn);
}
}
}一个很普通的删除方法,以前用同样的方法应用在Oracle或MySQL上绝对没问题。如今换了SQL Server 2005,这代码却失效了!并抛出异常!
----------------------------------------------------------------------------------------------------------
com.microsoft.sqlserver.jdbc.SQLServerException: 必须声明标量变量 "@P0and"。
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(Unknown Source)
at com.microsoft.sqlserver.jdbc.IOBuffer.processPackets(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.sendExecute(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteUpdate(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(Unknown Source)
at com.nissan.Service.remove(Service.java:106)
at com.nissan.util.Test.main(Test.java:26)
----------------------------------------------------------------------------------------------------------以前没用过SQL Server,现在做项目客户要用这个数据库就得用,可是这个问题从没遇到过,希望有经验的朋友告诉我怎么解决,先谢谢了!
解决方案 »
- 请教一个SOCKET 多线程的问题
- 五子棋算法
- 一个比较疑惑的问题
- JAVA的接口声明变量
- 有关mysql多表查询
- 请教大家一个问题:请问有没有一个API可以接收字符串,如:2005-09-23 18:35:30.0 直接可以转为时间日期??????
- java内存分配的一个奇怪问题
- 快,下载算法ebook(10部算法经典著作的合集) !
- java里面的两个class编译后有两个*.class文件,怎么运行它??
- 朋友们 ,为什莫我的java 源程序,可以编译成 字节码文件,但是运行.class 文件系统报告异常
- 'javac' 不是内部或外部命令,也不是可运行的程序??
- 如何运行一个没有main的类呢?
=》
fyear = ? and data_type
where fyear = ?and data_type = ? and fitemid = ?";
如果一个字符串换行写
通常是这样写:
String sql = "delete from tmp_purchasing "
+" where fyear = ?and data_type = ? and fitemid = ? ";
可以避免没必要的异常.