public void testClobA() {

    try {
      String ddl0 = "DROP TABLE CLOBTEST IF EXISTS";
      String ddl1 = "CREATE TABLE CLOBTEST(ID IDENTITY, CLOBFIELD CLOB(1000))";

      statement.execute(ddl0);
      statement.execute(ddl1);
    } catch (SQLException e) {
    }

    try {
      String dml0 = "insert into clobtest(clobfield) values(?)";
      String dql0 = "select * from clobtest;";
      PreparedStatement ps = connection.prepareStatement(dml0);
      String data = "Testing blob insert and select ops";
      Clob clob = new JDBCClob(data);

      ps.setClob(1, clob);
      ps.executeUpdate();

      data = data.replaceFirst("insert", "INSERT");
      clob = new JDBCClob(data);

      ps.setClob(1, clob);
      ps.executeUpdate();
      ps.close();

      ps = connection.prepareStatement(dql0);

      ResultSet rs = ps.executeQuery();

      rs.next();

      Clob clob1 = rs.getClob(2);

      rs.next();

      Clob clob2 = rs.getClob(2);
      int data1 = clob1.getSubString(1, data.length()).indexOf("insert");
      int data2 = clob2.getSubString(1, data.length()).indexOf("INSERT");

      assertTrue(data1 == data2 && data1 > 0);
    } catch (SQLException e) {
      e.printStackTrace();
    }
  }
  public void insertMessage(WebSocketMessageDTO message) throws DatabaseException {
    try {
      // synchronize on whole object to avoid race conditions with insertOrUpdateChannel()
      synchronized (this) {
        if (getConnection().isClosed()) {
          // temporarily buffer messages and write them the next time
          messagesBuffer.offer(message);
          return;
        }

        do {
          if (!channelIds.contains(message.channel.id)) {
            // maybe channel is buffered
            if (channelsBuffer.size() > 0) {
              insertOrUpdateChannel(channelsBuffer.poll());
            }
            throw new SQLException("channel not inserted: " + message.channel.id);
          }

          logger.info("insert message: " + message.toString());

          psInsertMessage.setInt(1, message.id);
          psInsertMessage.setInt(2, message.channel.id);
          psInsertMessage.setTimestamp(3, new Timestamp(message.timestamp));
          psInsertMessage.setInt(4, message.opcode);

          // write payload
          if (message.payload instanceof String) {
            psInsertMessage.setClob(5, new JDBCClob((String) message.payload));
            psInsertMessage.setNull(6, Types.BLOB);
          } else if (message.payload instanceof byte[]) {
            psInsertMessage.setNull(5, Types.CLOB);
            psInsertMessage.setBlob(6, new JDBCBlob((byte[]) message.payload));
          } else {
            throw new SQLException(
                "Attribute 'payload' of class WebSocketMessageDTO has got wrong type!");
          }

          psInsertMessage.setInt(7, message.payloadLength);
          psInsertMessage.setBoolean(8, message.isOutgoing);
          psInsertMessage.execute();

          if (message instanceof WebSocketFuzzMessageDTO) {
            WebSocketFuzzMessageDTO fuzzMessage = (WebSocketFuzzMessageDTO) message;
            psInsertFuzz.setInt(1, fuzzMessage.fuzzId);
            psInsertFuzz.setInt(2, fuzzMessage.id);
            psInsertFuzz.setInt(3, fuzzMessage.channel.id);
            psInsertFuzz.setString(4, fuzzMessage.state.toString());
            psInsertFuzz.setString(5, fuzzMessage.fuzz);
            psInsertFuzz.execute();
          }

          message = messagesBuffer.poll();
        } while (message != null);
      }
    } catch (SQLException e) {
      throw new DatabaseException(e);
    }
  }
 public void setClob(int i, Clob x) throws SQLException {
   checkOpen();
   try {
     _stmt.setClob(i, x);
   } catch (SQLException e) {
     handleException(e);
   }
 }
 public void setClob(int idx, Clob clob) throws SQLException {
   try {
     addMementoEntry("setClob", new Class[] {Clob.class}, idx, clob);
     wrapped.setClob(idx, clob);
   } catch (SQLException e) {
     throw new UcanaccessSQLException(e);
   }
 }
示例#5
0
  public void setClob(int i, Clob x) throws SQLException {
    Profiler profiler = _profilerPoint.start();

    try {
      _preparedStatement.setClob(i, x);
    } finally {
      profiler.finish();
    }
  }
 public void setClob(int idx, Reader reader, long length) throws SQLException {
   try {
     reader = markableReader(reader, length);
     addMementoEntry("setClob", new Class[] {Reader.class, Long.TYPE}, idx, reader, length);
     wrapped.setClob(idx, reader, length);
     resetReader(reader);
   } catch (SQLException e) {
     throw new UcanaccessSQLException(e);
   }
 }
 public void setClob(int i, Clob x) throws SQLException {
   String methodCall = "setClob(" + i + ", " + x + ")";
   argTraceSet(i, "(Clob)", x == null ? null : ("<Clob of size " + x.length() + ">"));
   try {
     realPreparedStatement.setClob(i, x);
   } catch (SQLException s) {
     reportException(methodCall, s);
     throw s;
   }
   reportReturn(methodCall);
 }
 public void setClob(int parameterIndex, Reader reader) throws SQLException {
   String methodCall = "setClob(" + parameterIndex + ", " + reader + ")";
   argTraceSet(parameterIndex, "(Reader)", "<Reader>");
   try {
     realPreparedStatement.setClob(parameterIndex, reader);
   } catch (SQLException s) {
     reportException(methodCall, s);
     throw s;
   }
   reportReturn(methodCall);
 }
  public void test_clob_Clob_String() throws Exception {
    Connection conn = getConnection();

    declareAndRunFunction("clob_Clob_String", "clob", new String[] {"varchar( 10 )"}, "'3'", "3");

    // now test clob arguments
    declareFunction(conn, "varchar_Clob_Clob", "varchar( 10 )", new String[] {"clob"});

    runFunction(conn, "varchar_Clob_Clob", " \"clob_Clob_String\"( 'abc' )", "abc", null);

    // make sure that you can set lob-typed ? parameters
    PreparedStatement ps = chattyPrepare(conn, "values ( \"varchar_Clob_Clob\"( ? ) )");
    String expectedValue = "abcdef";
    Clob clob = AnsiSignatures.clob_Clob_String(expectedValue);
    ps.setClob(1, clob);
    String actualValue = (String) getScalarString(ps);
    assertTrue(expectedValue.equals(actualValue));
  }
示例#10
0
  public static void saveKit(final Player p) {
    if (kit.get(p) != null) {
      ItemStack five = kit.get(p).getItem(5);
      ItemStack six = kit.get(p).getItem(6);

      kit.get(p).setItem(5, null);
      kit.get(p).setItem(6, null);

      if (!(MySQL.mySQLenabled())) {
        KitFile.getData().set("Kit." + p.getUniqueId(), SaveAndLoad.toString(kit.get(p)));
        KitFile.saveData();
        KitFile.reloadData();
      } else {
        String INSERT = "INSERT INTO CODKits VALUES(?, ?) ON DUPLICATE KEY UPDATE list=?";
        try {
          Connection conn = MySQL.getConnection();
          PreparedStatement ps = conn.prepareStatement(INSERT);

          ps.setString(1, p.getUniqueId().toString());

          Clob clob = conn.createClob();
          ArrayList<String> list = SaveAndLoad.toString(kit.get(p));
          clob.setString(1, MySQL.listToString(list));
          ps.setClob(2, clob);
          ps.setClob(3, clob);

          ps.executeUpdate();
          ps.close();
          conn.close();
        } catch (Exception e) {
          e.printStackTrace();
        }
      }

      kit.get(p).setItem(5, five);
      kit.get(p).setItem(6, six);
    } else {
      return;
    }
  }
示例#11
0
  public static void saveOwnedPerks(Player p) {
    if (!(MySQL.mySQLenabled())) {
      List<String> perkNames = new ArrayList<String>();
      for (Perk perk : ownedPerks.get(p)) {
        perkNames.add("" + perk);
      }

      PerksFile.getData().set("Perks.OwnedPerks." + p.getUniqueId(), perkNames);
      PerksFile.saveData();
      PerksFile.reloadData();
    } else {
      try {
        Connection conn = MySQL.getConnection();
        String INSERT =
            "INSERT INTO CODPerks (uuid, list) VALUES(?, ?) ON DUPLICATE KEY UPDATE list=?";
        PreparedStatement ps = conn.prepareStatement(INSERT);
        ps.setString(1, p.getUniqueId().toString());

        ArrayList<String> perkNames = new ArrayList<String>();
        for (Perk perk : ownedPerks.get(p)) {
          perkNames.add("" + perk);
        }

        Clob clob = MySQL.stringToClob(MySQL.listToString(perkNames), conn);
        ps.setClob(2, clob);
        ps.setClob(3, clob);

        ps.executeUpdate();

        ps.close();
        conn.close();
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
  }
 @Override
 public void setClob(int parameterIndex, Clob x) throws SQLException {
   stmt.setClob(parameterIndex, x);
   logValue(parameterIndex, x == null ? null : "<Clob>");
 }
示例#13
0
  /**
   * 处理修改
   *
   * @param actionForm ActionForm 表单From
   * @param request HttpServletRequest Web请求
   * @param response HttpServletResponse Web结果
   * @throws CDealException 处理异常
   */
  public static void doEdit(
      EditForm pWebForm, HttpServletRequest request, HttpServletResponse response)
      throws CDealException, SQLException {
    CUserBean loginUser =
        (CUserBean) request.getSession().getAttribute(CConstants.USER_BEAN); // 用户BEAN
    long chapterid = pWebForm.getTPubFlfggl().getId();
    Connection mconn = null;
    PreparedStatement pstmt = null;
    try {
      /*TPubFlfggl aPoBean = webForm2PoForm(pWebForm);  // 将页面的Form的数据拷内到实体对象
      aPoBean.setModperson(loginUser.getId());  // 用户 ID
      aPoBean.setModtime(CTools.getCurrentTimestamp());  // 当前时间
      CHibernateUtil.updateObject(aPoBean);  // 调用 PO 层进行修改 */
      mconn = CDBManager.getConn();
      mconn.setAutoCommit(false); // 将自动提交设置为否
      String sql =
          "update t_pub_law a set a.modperson=?,a.modtime=?,a.title=?,a.classification=?,a.businesstype=?,a.issuedate=?,a.orderno=?,a.bigcontent = ? where a.id = ? ";
      pstmt = mconn.prepareStatement(sql);
      pstmt.setLong(1, loginUser.getId());
      pstmt.setTimestamp(2, CTools.getCurrentTimestamp());
      pstmt.setString(3, pWebForm.getTPubFlfggl().getTitle());
      pstmt.setInt(4, pWebForm.getTPubFlfggl().getClassification());
      pstmt.setInt(5, pWebForm.getTPubFlfggl().getBusinesstype());
      pstmt.setTimestamp(
          6,
          CTools.convertStringToTimestamp(
              pWebForm.getTPubFlfggl().getIssueTime_str(), "yyyy-MM-dd"));
      pstmt.setLong(7, pWebForm.getTPubFlfggl().getOrderno());
      pstmt.setClob(8, CLOB.empty_lob());
      pstmt.setLong(9, chapterid);
      pstmt.executeUpdate();
      pstmt.close();

      // =======================再次从库表中读出,获得CLOB句柄
      pstmt =
          mconn.prepareStatement("select a.bigcontent from t_pub_law a where a.id = ? for update");
      pstmt.setLong(1, chapterid);
      ResultSet rs = pstmt.executeQuery();
      rs.next();
      CLOB textClob = (CLOB) rs.getClob(1);
      if (textClob == null) {
        CLog.println("340========textClob is null");
      }
      if (pWebForm.getTPubFlfggl().getBigContent_str() == null) {
        CLog.println("343========BigContent_str is null");
      }
      textClob.putString(
          1,
          pWebForm
              .getTPubFlfggl()
              .getBigContent_str()
              .replaceAll("\n", "<br>")); // 将页面的法律法规内容写入Clob
      pstmt = mconn.prepareStatement("update t_pub_law set bigcontent=? where id=?");
      pstmt.setClob(1, textClob);
      pstmt.setLong(2, chapterid);
      pstmt.executeUpdate();
    } catch (Exception e) {
      throw new CDealException("执行修改" + mModuleName + "时失败。", e);
    } finally {
      if (pstmt != null) {
        pstmt.close();
      }
      mconn.commit();
      if (mconn != null) {
        mconn.close();
      }
    }
  }
示例#14
0
 /**
  * 处理增加
  *
  * @param actionForm ActionForm 表单From
  * @param request HttpServletRequest Web请求
  * @param response HttpServletResponse Web结果
  * @throws CDealException 处理异常
  */
 public static long doAdd(
     AddForm pWebForm, HttpServletRequest request, HttpServletResponse response)
     throws CDealException, SQLException {
   long chapterid;
   Connection mconn = null;
   PreparedStatement pstmt = null;
   try {
     CUserBean loginUser =
         (CUserBean) request.getSession().getAttribute(CConstants.USER_BEAN); // 用户BEAN
     /*TPubFlfggl aPoBean = webForm2PoForm(pWebForm);  // 将页面的Form的数据拷内到实体对象
     aPoBean.setId(CTools.getNewNumID());
     aPoBean.setCreateperson(loginUser.getId());  // 用户 ID
     aPoBean.setCreatetime(CTools.getCurrentTimestamp());  // 当前时间
     CHibernateUtil.saveObject(aPoBean);  // 调用 PO 层进行增加 */
     chapterid = CTools.getNewNumID();
     mconn = CDBManager.getConn();
     mconn.setAutoCommit(false); // 将自动提交设置为否
     String sql =
         "insert into t_pub_law (id,createperson,createtime,title,classification,issuedate,orderno,spare1,spare2,spare3,spare4,businesstype,bigcontent) values(?,?,?,?,?,?,?,?,?,?,?,?,?)";
     pstmt = mconn.prepareStatement(sql);
     pstmt.setLong(1, chapterid);
     pstmt.setLong(2, loginUser.getId());
     pstmt.setTimestamp(3, CTools.getCurrentTimestamp());
     pstmt.setString(4, pWebForm.getTPubFlfggl().getTitle());
     CLog.println("4====title=" + pWebForm.getTPubFlfggl().getTitle());
     pstmt.setInt(5, pWebForm.getTPubFlfggl().getClassification());
     CLog.println("5====classification=" + pWebForm.getTPubFlfggl().getClassification());
     pstmt.setTimestamp(
         6,
         CTools.convertStringToTimestamp(
             pWebForm.getTPubFlfggl().getIssueTime_str(), "yyyy-mm-dd"));
     pstmt.setLong(7, pWebForm.getTPubFlfggl().getOrderno());
     pstmt.setString(8, pWebForm.getTPubFlfggl().getSpare1());
     pstmt.setString(9, pWebForm.getTPubFlfggl().getSpare2());
     pstmt.setString(10, pWebForm.getTPubFlfggl().getSpare3());
     pstmt.setString(11, pWebForm.getTPubFlfggl().getSpare4());
     pstmt.setInt(12, pWebForm.getTPubFlfggl().getBusinesstype());
     pstmt.setClob(13, CLOB.empty_lob()); // 构造空CLOB对象
     pstmt.executeUpdate();
     pstmt.close();
     // =======================再次从库表中读出,获得CLOB句柄
     pstmt =
         mconn.prepareStatement("select a.bigcontent from t_pub_law a where a.id = ? for update");
     pstmt.setLong(1, chapterid);
     ResultSet rs = pstmt.executeQuery();
     rs.next();
     CLOB textClob = (CLOB) rs.getClob(1);
     textClob.putString(
         1,
         pWebForm
             .getTPubFlfggl()
             .getBigContent_str()
             .replaceAll("\n", "<br>")); // 将页面的法律法规内容写入Clob
     pstmt = mconn.prepareStatement("update t_pub_law set bigcontent=? where id=?");
     pstmt.setClob(1, textClob);
     pstmt.setLong(2, chapterid);
     pstmt.executeUpdate();
     return chapterid;
   } catch (Exception e) {
     throw new CDealException("执行增加" + mModuleName + "时失败。", e);
   } finally {
     if (pstmt != null) {
       pstmt.close();
     }
     mconn.commit();
     if (mconn != null) {
       mconn.close();
     }
   }
 }
 public void setClob(int parameterIndex, Clob x) throws SQLException {
   delegate.setClob(parameterIndex, x);
 }
示例#16
0
  // this method is a work in progress. additional functionality will be added as needed.
  private int setPreparedStatementParameter(Object object, int index) {

    if ((preparedStatement_ == null) || (preparedStatementParameters_ == null)) {
      logger.warn(
          "Can't set preparedStatementParameters - preparedStatementParameters or preparedStatement is null");
      return -1;
    }

    try {
      if (object == null) {
        preparedStatement_.setObject(index++, null);
      } else if (object instanceof BigDecimal) {
        preparedStatement_.setBigDecimal(index++, (BigDecimal) object);
      } else if (object instanceof Blob) {
        preparedStatement_.setBlob(index++, (Blob) object);
      } else if (object instanceof Boolean) {
        preparedStatement_.setBoolean(index++, (Boolean) object);
      } else if (object instanceof Byte) {
        preparedStatement_.setByte(index++, (Byte) object);
      } else if (object instanceof byte[]) {
        preparedStatement_.setBytes(index++, (byte[]) object);
      } else if (object instanceof Clob) {
        preparedStatement_.setClob(index++, (Clob) object);
      } else if (object instanceof Double) {
        preparedStatement_.setDouble(index++, (Double) object);
      } else if (object instanceof Float) {
        preparedStatement_.setFloat(index++, (Float) object);
      } else if (object instanceof Integer) {
        preparedStatement_.setInt(index++, (Integer) object);
      } else if (object instanceof List) {
        for (Object listObject : (List) object) {
          setPreparedStatementParameter(listObject, index++);
        }
      } else if (object instanceof Long) {
        preparedStatement_.setLong(index++, (Long) object);
      } else if (object instanceof Short) {
        preparedStatement_.setShort(index++, (Short) object);
      } else if (object instanceof String) {
        preparedStatement_.setString(index++, (String) object);
      } else if (object instanceof java.sql.Timestamp) {
        preparedStatement_.setTimestamp(index++, (java.sql.Timestamp) object);
      } else if (object instanceof java.sql.Date) {
        preparedStatement_.setDate(index++, (java.sql.Date) object);
      } else if (object instanceof java.util.Date) {
        java.util.Date tempDate = (java.util.Date) object;
        java.sql.Date dateSql = new java.sql.Date(tempDate.getTime());
        preparedStatement_.setDate(index++, dateSql);
      } else {
        if (object instanceof Object) {
        } else {
          logger.warn(
              "Setting PreparedStatement parameter to 'object' type when object is not an object type");
        }

        preparedStatement_.setObject(index++, object);
      }

      return index;
    } catch (Exception e) {
      logger.error(e.toString() + System.lineSeparator() + StackTrace.getStringFromStackTrace(e));
      return -1;
    }
  }
 public void setClob(int parameterIndex, Reader reader) throws SQLException {
   delegate.setClob(parameterIndex, reader);
 }
 public void setClob(int i, Clob x) throws SQLException {
   saveParam(i, "" + x, "Clob");
   statement.setClob(i, x);
 }
示例#19
0
  public static void saveClans() {
    if (!(MySQL.mySQLenabled())) {
      HashMap<Integer, String> Owner = new HashMap<Integer, String>();
      int next = 0;

      while (ClansFile.getData().get("Clans." + next) != null) {
        Owner.put(next, ClansFile.getData().getString("Clans." + next + ".Owner"));
        next++;
      }

      ClansFile.getData().set("Clans", null);
      ClansFile.saveData();
      ClansFile.reloadData();

      for (int i = 0; i < clans.size(); i++) {
        ClansFile.getData().set("Clans." + i + ".Name", clans.get(i));
        if (clan.get(clans.get(i)) != null) {
          ClansFile.getData().set(("Clans." + i + ".Players"), clan.get(clans.get(i)));
        }
        if (admins.get(clans.get(i)) != null) {
          ClansFile.getData().set("Clans." + i + ".Admins", admins.get(clans.get(i)));
        }
        ClansFile.getData().set(("Clans." + i + ".Owner"), Owner.get(i));
      }

      ClansFile.saveData();
      ClansFile.reloadData();
      loadClans();
    } else {
      try {
        HashMap<String, String> Owner = new HashMap<String, String>();

        Connection conn = MySQL.getConnection();
        PreparedStatement ps = conn.prepareStatement("SELECT clan,owner FROM CODClans");
        ResultSet rs = ps.executeQuery();

        while (rs.next()) {
          Owner.put(rs.getString("clan"), rs.getString("owner"));
        }

        ps = conn.prepareStatement("DELETE FROM CODClans");
        ps.executeUpdate();

        for (int i = 0; i < clans.size(); i++) {
          String INSERT =
              "INSERT INTO CODClans (clan, owner, players, admins) VALUES(?, ?, ?, ?) ON DUPLICATE KEY UPDATE owner=?,players=?,admins=?";
          ps = conn.prepareStatement(INSERT);
          ps.setString(1, clans.get(i));
          if (clan.get(clans.get(i)) != null) {
            Clob clob = MySQL.stringToClob(MySQL.listToString(clan.get(clans.get(i))), conn);
            ps.setClob(3, clob);
            ps.setClob(6, clob);
          } else {
            Clob clob = MySQL.stringToClob(MySQL.listToString(new ArrayList<String>()), conn);
            ps.setClob(3, clob);
            ps.setClob(6, clob);
          }

          if (admins.get(clans.get(i)) != null) {
            Clob clob = MySQL.stringToClob(MySQL.listToString(admins.get(clans.get(i))), conn);
            ps.setClob(4, clob);
            ps.setClob(7, clob);
          } else {
            Clob clob = MySQL.stringToClob(MySQL.listToString(new ArrayList<String>()), conn);
            ps.setClob(4, clob);
            ps.setClob(7, clob);
          }

          ps.setString(2, Owner.get(clans.get(i)));
          ps.setString(5, Owner.get(clans.get(i)));

          ps.executeUpdate();
          ps.close();
          conn.close();
        }
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
  }
  private void testClob(int length) throws Exception {
    Random r = new Random(length);
    char[] data = new char[length];

    // Unicode problem:
    // The UCS code values 0xd800-0xdfff (UTF-16 surrogates)
    // as well as 0xfffe and 0xffff (UCS non-characters)
    // should not appear in conforming UTF-8 streams.
    // (String.getBytes("UTF-8") only returns 1 byte for 0xd800-0xdfff)
    for (int i = 0; i < length; i++) {
      char c;
      do {
        c = (char) r.nextInt();
      } while (c >= 0xd800 && c <= 0xdfff);
      data[i] = c;
    }
    Clob c = conn.createClob();
    Writer out = c.setCharacterStream(1);
    out.write(data, 0, data.length);
    out.close();
    stat.execute("delete from test");
    PreparedStatement prep = conn.prepareStatement("insert into test values(?, ?)");

    prep.setInt(1, 1);
    prep.setClob(2, c);
    prep.execute();

    c = conn.createClob();
    c.setString(1, new String(data));
    prep.setInt(1, 2);
    prep.setClob(2, c);
    prep.execute();

    prep.setInt(1, 3);
    prep.setCharacterStream(2, new StringReader(new String(data)));
    prep.execute();

    prep.setInt(1, 4);
    prep.setCharacterStream(2, new StringReader(new String(data)), -1);
    prep.execute();

    NClob nc;
    nc = conn.createNClob();
    nc.setString(1, new String(data));
    prep.setInt(1, 5);
    prep.setNClob(2, nc);
    prep.execute();

    prep.setInt(1, 5);
    prep.setNClob(2, new StringReader(new String(data)));
    prep.execute();

    prep.setInt(1, 6);
    prep.setNClob(2, new StringReader(new String(data)), -1);
    prep.execute();

    prep.setInt(1, 7);
    prep.setNString(2, new String(data));
    prep.execute();

    ResultSet rs;
    rs = stat.executeQuery("select * from test");
    rs.next();
    Clob c2 = rs.getClob(2);
    assertEquals(length, c2.length());
    String s = c.getSubString(1, length);
    String s2 = c2.getSubString(1, length);
    while (rs.next()) {
      c2 = rs.getClob(2);
      assertEquals(length, c2.length());
      s2 = c2.getSubString(1, length);
      assertEquals(s, s2);
    }
  }