Tag: sqlexception

获取TDS驱动程序 – java.lang.NullPointerException。 这种例外不一致

从3或4个线程调用方法时,我遇到exception。 此方法在方法内部获取DataBase连接并从DB填充一些值,然后连接(connection,resultset和prepareStatement)仅在方法内正确关闭。 仍然有例外。 Thread_1 – 调用abc()方法。 连接打开和关闭内部方法。 Thread_2 – 调用abc()方法。 连接打开和关闭内部方法。 Thread_3 – 调用abc()方法。 连接打开和关闭内部方法。 我不清楚为什么即使正确打开和关闭连接也会发生exception。 DataBase – Ms sql,Java – 1.6,apache-tomcat 6。 主要的是它不一致,有时会发生exception,有时则不会。 1. Exception – com.inet.tds.am: [TDS Driver]java.lang.NullPointerException at com.inet.tds.aj.a(Unknown Source) at com.inet.tds.rg(Unknown Source) at com.inet.tds.r.executeQuery(Unknown Source) at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:93) 2. Exception – java.sql.SQLException: Connection is closed. at org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.checkOpen(PoolingDataSource.java:175) at org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.prepareStatement(PoolingDataSource.java:301) 请告知此事。

java.sql.SQLException:参数索引超出范围(2>参数个数,为0)

public class Brothers extends javax.swing.JFrame { /** * declaring connection and SQL statement */ Connection cn; Statement st; PreparedStatement pstmt=null; PreparedStatement pst; ResultSet rs; Object fname, mname, lname, bdate, nation, statusq,InstNo, photo, combo, place, mimi; int status; public Brothers() { dbconnect _db = new dbconnect(); /*//////////////the above is just to show that I have two […]

如何创建可滚动的ResultSet?

我得到了这个简单的代码来从MSSQL Server 2008中检索记录集,由于我设置了ResultSet.TYPE_SCROLL_INSENSITVE,因此必须可以滚动它,与Javadocs中的示例相同: String qry = “SELECT * from tblPeople”; SQLConnection sql = new SQLConnection(); Statement stmt = sql.getConnection().createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs = stmt.executeQuery(qry); 不幸的是,当我想获得像rs.last(); int rowCount = rs.getRow();这样的行数时,我仍然得到了这个Stack Trace rs.last(); int rowCount = rs.getRow(); rs.last(); int rowCount = rs.getRow(); : java.sql.SQLException: ResultSet may only be accessed in a forward direction. at net.sourceforge.jtds.jdbc.JtdsResultSet.checkScrollable(JtdsResultSet.java:304) at […]

在为select查询使用预准备语句时获取SQLexception

StringBuilder sqlQry = new StringBuilder(); sqlQry.append(“SELECT LIB, PATH”) .append(” FROM OBJ”) .append(” INNER JOIN SRC ON SRC.MBR = OBJ.LOBJ”) .append(” WHERE TYPE = ‘*PGM'”) .append(” AND SRC.PATH LIKE ‘”).append(“?”).append(“%'”); PreparedStatement ps = accssConn.prepareStatement(sqlQry.toString()); ps.setString(1, path); rs = ps.executeQuery(); 大家好,我得到以下exception [jcc][10145][10844][3.63.123] Invalid parameter 1: Parameter index is out of range. ERRORCODE=-4461, SQLSTATE=42815 列限制为255,路径为=“C:\ Documents and Settings […]

Java SQLexception无效的游标状态 – 没有当前行

我一直在努力解决这个问题。 首先,我有一个insertProduct(Product p)方法,用于检查数据库中是否存在具有指定代码的产品。 如果是这样,此方法将显示错误消息。 否则,它应该将产品添加到数据库并将其打印到控制台。 我不确定我是否正确地做到了这一点。 其次, deleteProduct(Product p)方法应该删除insertProduct方法添加的产品。 现在的问题是,当我尝试添加产品时,我不断收到SQLexception,然后deleteProduct方法只是在每次运行程序时都会逐个删除数据库中的产品,直到不存在。 我不确定这两种方法都有什么问题。 控制台输出: Derby has been started. Product list: bvbn Murach’s Beginning Visual Basic .NET $49.50 cshp Murach’s C# $49.50 java Murach’s Beginning Java $49.50 jsps Murach’s Java Servlets and JSP $49.50 mcb2 Murach’s Mainframe COBOL $59.50 sqls Murach’s SQL for SQL Server $49.50 zjcl Murach’s […]

java.util.Date到java.sql.Date不包含Time

我在PreparedStatement上遇到SqlException ,因为它违反了表(dupe key)上的唯一性约束。 基本上我的表看起来像这样: mytable ======= mytable_id PRIMARY KEY INT NOT NULL fizz_id INT NOT NULL buzz_timestamp DATETIME 唯一性约束在buzz_timestamp ; 也就是说,没有2条记录可能具有相同的日期/时间“timestamp”。 将记录插入此表的PreparedStatement如下所示: PreparedStatement ps = conn.prepareStatement(insertQuery); ps.setDate(1, new java.sql.Date(new java.util.Date().getTime())); 所以你可以看到我正在使用java.util.Date() (“now”)并将其转换为java.sql.Date实例。 我看到的确切错误(欺骗密钥)一直在抱怨我正在尝试将2015-05-27 00:00:00.0000000插入到buzz_timestamp的表中,但它已经存在。 所以,显然,我使用的是Date API错误,并且我正在插入具有已淘汰时间组件的日期,从而产生欺骗性密钥exception。 所以我问: 我如何纠正这一点,以便我真正插入“现在”的日期和时间?

java.sql.SQLException:ORA-00904

我得到以下exception – java.sql.SQLException: ORA-00904: : invalid identifier ORA-06512: at line 1 以下是我试图执行的查询 – public static final String DATABASE_TABLE = “LnPData”; public static final String CREATE_SQL = “DECLARE ” + “t_count INTEGER; ” + “v_sql VARCHAR2(1000) := ‘create table ” +DATABASE_TABLE + “(” + “(ID number(10,0), ” + “CGUID VARCHAR(255), ” + “PGUID VARCHAR(255), ” + […]

我该如何防止此exception? java.sql.SQLException:无法转换为内部表示:

我的代码在以下行中引发了上述exception(第2行): final ArrayDescriptor tParamArrayDescriptor = ArrayDescriptor.createDescriptor(“MY_SYSTEM.T_PARAM_ARRAY”, databaseHandler.getConnection()); final ARRAY oracleArray = new ARRAY(tParamArrayDescriptor, databaseHandler.getConnection(), myObjects.toArray()); 它给了我以下例外: java.sql.SQLException: Fail to convert to internal representation: myObjects是以下POJO的ArrayList: public class MyObject { private String name; private String surname; private int age; … // Accessors etc.. } 数据库上的T_PARAM_ARRAY如下所示: create or replace TYPE T_PARAM_ARRAY AS OBJECT (NAME VARCHAR2(50), SURNAME VARCHAR2(50), AGE […]

如何从PreparedStatement获取参数?

我正在为SQLException编写通用记录器,我想获取传递给PreparedStatement的参数,该怎么做? 我能够得到他们的数量。 ParameterMetaData metaData = query.getParameterMetaData(); parameterCount = metaData.getParameterCount();

如果输入值不为null,则更新列,否则忽略并保留数据库中列的现有值

我使用JAVA和MySQL来更新表,输入参数作为JSON输入。 问题是我不知道所有参数在输入中是否存在和不存在,因此可以为某些参数获取空值。 因此,当我运行更新查询时,我的数据库中的所有列都存储了这些空值。 我浏览了网页并查看了堆栈上的各种解决方案。 我发现这是一个经过测试的解决方案,但它对我不起作用。 我是新手,所以我愿意以任何其他方式实现这一目标: String updateQuery = “UPDATE ” + USER_TABLE + ” SET ” + USER_TABLE_FIRST_NAME + “=IFNULL(“+ user.getFirstName() + “,” + USER_TABLE_FIRST_NAME + “),” + USER_TABLE_LAST_NAME + “='” + user.getLastName() + “‘,” + USER_TABLE_ABOUT_ME + “='” + user.getAboutMe() + “‘,” + USER_TABLE_CITY + “='” + user.getCity() + “‘,” + USER_TABLE_DOB + […]