c3p0+Mysql4.0+linux,在了插入的时候出现了个奇怪的问题
java.sql.SQLException: An SQLException was provoked by the following failure: java.lang.StringIndexOutOfBoundsException: String index out of range: 4
,而查询是没有。
还有在我本地插入服务器数据库也没问题,String sql = "insert into userrequest(name,address, phone, gotime, houseserviceid,serviceareaid, earnest,createtime ," +
"flagid,smscontent,ordernum,payphone,statusid,paytime,acquirertime,acquirercompletetime,re) values"
+ " (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) "; System.out.println("sql_="+sql);
try {

con = DBManager.GetConnection();
pre = con.prepareStatement(sql);
pre.setString(1, userRequestInfo.getName());
pre.setString(2, userRequestInfo.getAddress());
pre.setString(3, userRequestInfo.getPhone());
pre.setString(4, userRequestInfo.getGotime());
pre.setString(5, userRequestInfo.getHouseserviceid());
pre.setString(6, userRequestInfo.getServiceareaid());
pre.setFloat(7, userRequestInfo.getEarnest());
pre.setString(8, createtime);
         pre.setInt(9, 2);// flagId// 支付状态。1支付成功,2待确认,3未缴费,4超时
pre.setString(10, userRequestInfo.getSmscontent());
pre.setString(11, userRequestInfo.getOrdernum());
pre.setString(12, userRequestInfo.getPayphone());
pre.setInt(13, 6);// statusid// // 订单完成状态。1未收单,2已收单,3已完成,4超时,5
pre.setString(14, "");
pre.setString(15, "");
pre.setString(16, "");
pre.setString(17, userRequestInfo.getRe());// re int flag=pre.executeUpdate();
c3p0配置:
<bean id="dataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="com.mysql.jdbc.Driver">
</property>
<property name="jdbcUrl"
value="${c3p0.connection.url}">
</property>
<property name="user" value="${c3p0.connection.username}"></property>
<property name="password" value="${c3p0.connection.password}"></property>
<property name="acquireIncrement" value="5"></property>
<property name="acquireRetryAttempts" value="30"></property>
<property name="acquireRetryDelay" value="1000"></property>
<property name="autoCommitOnClose" value="false"></property>
<property name="initialPoolSize" value="3"></property>
<property name="maxIdleTime" value="30"></property>
<property name="maxPoolSize" value="100"></property>
</bean>

解决方案 »

  1.   

    java.lang.StringIndexOutOfBoundsException看看是给哪个字符串赋值的时候超出它的大小了
      

  2.   

    可能是你的数据库连接url这里出现了问题
    贴出来看下
      

  3.   

    jdbc:mysql://xxxxx:3306/CpContainerCMPP30?user=XX&password=XX&useUnicode=true&characterEncoding=GBK
      

  4.   

    改成这样试下:
    jdbc:mysql://xxxxx:3306/CpContainerCMPP30?user=XX&password=XX&useUnicode=true&characterEncoding=gb2312
      

  5.   

    jdbc:mysql://xxxxx:3306/CpContainerCMPP30?user=XX&password=XX&useUnicode=true&characterEncoding=gb2312
    正解
    编码问题
    谢师兄了