[Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]将 varchar 值 'null' 转换为数据类型为 int 的列时发生语法错误。
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]将 varchar 值 'null' 转换为数据类型为 int 的列时发生语法错误。
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSExecuteRequest.processReplyToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplStatement.getNextResultType(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.commonTransitionToState(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.postImplExecute(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.executeUpdateInternal(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.executeUpdate(Unknown Source)
at com.bwm.db.Data.insert(Data.java:58)
at org.apache.jsp.kygluser.check_jsp._jspService(org.apache.jsp.kygluser.check_jsp:257)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
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:667)
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:619)
data.java如下:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space 
// Source File Name:   Data.javapackage com.bwm.db;import java.io.PrintStream;
import java.sql.ResultSet;
import java.sql.Statement;// Referenced classes of package com.bwm.db:
// Conndbpublic class Data
{ private Conndb con;
private Statement stmt;
private ResultSet rs; public Data()
{
con = new Conndb();
} public int getRowCount(String strSql)
{
int intCount = 0;
try
{
stmt = con.getstmtread();
rs = stmt.executeQuery("SELECT COUNT(*) FROM " + strSql);
if (rs.next())
intCount = rs.getInt(1);
else
intCount = -1;
}
catch (Exception e)
{
intCount = -2;
System.err.println(e.getMessage());
e.printStackTrace();
}
finally
{
con.close();

}return intCount;
} public int insert(String sql)
{
int count = 0;
stmt = con.getstmt();
try
{
count = stmt.executeUpdate(sql);//第五十八行。出错行。
}
catch (Exception e)
{
count = -2;
System.err.println(e.getMessage());
e.printStackTrace();
}
finally
{
con.close();

}return count;
} public int update(String sql)
{
int count = 0;
stmt = con.getstmt();
try
{
count = stmt.executeUpdate(sql);
}
catch (Exception e)
{
count = -2;
System.err.println(e.getMessage());
e.printStackTrace();
}
finally
{
con.close();

}return count;
} public int delete(String sql)
{
int count = 0;
stmt = con.getstmt();
try
{
count = stmt.executeUpdate(sql);
}
catch (Exception e)
{
count = -2;
System.err.println(e.getMessage());
e.printStackTrace();
}
finally
{
con.close();

}return count;
}
}

解决方案 »

  1.   

    ava.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]将 varchar 值 'null' 转换为数据类型为 int 的列时发生语法错误。
    指的是数据库中没行数据是空的,在java看来就是null,所以在转化的时候 会报转化错误 , 将数据库内没有数据的字段,填上数据就行
      

  2.   

    我看着那个.java文件里面的值是整型的 ,我的数据库中都是字符串的。我在测试一个项目。为什么这个。java文件要这么写呢。
      

  3.   

    这还不是.java文件的问题,现在是你从数据库中取出数据的时候,数据库内的数据为空,在java中取数据时数据库的数据是不能为空的,如果为空就会认为是null,null怎么能转化呢 , 所以它会报这个错,你现在将数据库内的数据填上啊
      

  4.   

    Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]将 varchar 值 'null' 转换为数据类型为 int 的列时发生语法错误。
    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]将 varchar 值 'null' 转换为数据类型为 int 的列时发生语法错误。
    错误已经很明显了吧...