67,512
社区成员
发帖
与我相关
我的任务
分享
public class DBhelp {
static String driverClass="oracle.jdbc.driver.OracleDriver"; //oracle的驱动
static String url="jdbc:oracle:thin:@192.168.5.16:1521:noCard";
static String user="card22";//user是数据库的用户名
static String password="card11";
public static Connection getconn() { //为了方便下面的讲解,这里专门建立了一个用于数据库连接的一个方法
Connection conn=null;
try {
//首先建立驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//驱动成功后进行连接
conn=DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return conn; //返回一个连接
}
public static int insert(String sql){
Connection conn=null;
Statement st=null;
conn=getconn();
//获得连接
int result;
try {
st=conn.createStatement();
//创建插入的sql语句
//返回一个进行此操作的结果,要么成功,要么失败,如果返回的结果>0就是成功,反之失败
result=st.executeUpdate(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
result=0;
e.printStackTrace();
}
return result;
}
}
try {
String sql="insert into JingDong(TRX_CODE) values('"+trx_code+"'')";
logger.info("sql:"+sql);
int aa= DBhelp.insert(sql);
} catch (JDOMException e) {
logger.info("报文解释出错,报文格式不正确");
} catch (Exception e) {
logger.info("错误:"+e.getMessage());
}
DBhelp.insert(sql); //你这里每次都建一个链接去执行sql,目前怀疑是连接不够的原因;
//另外你这里,也会再面临一个问题,就是表空间增长与扩容的问题,会导致插入数据效率很低。
你可以看看我之前发的一个帖子:1000W INSERT语句,快速插入ORACLE
public static int insert(String sql) throws SQLException{
Connection conn=null;
Statement st=null;
conn=getconn();
//获得连接
int result;
try {
st=conn.createStatement();
//创建插入的sql语句
//返回一个进行此操作的结果,要么成功,要么失败,如果返回的结果>0就是成功,反之失败
result=st.executeUpdate(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
result=0;
e.printStackTrace();
}finally
{
if(null!=conn)
{
conn.close();
conn=null;
}
if(null!=st)
{
st.close();
st=null;
}
}
return result;
}
这样改了下,加上关闭连接,不报上边的错误了,确实是没有关闭连接,持续向数据库写入30万笔数据,结果有10047笔没有写入,这个什么原因[/quote]
插入数据的代码是什么? 哪部分数据没插入呢? 信息太少,不好判断
catch (Exception e) {
logger.info("错误:"+e.getMessage());
}
应该写成这样才能把异常栈完整打印出来:
catch (Exception e) {
logger.info("错误:",e);
}
或者这样
catch (Exception e) {
e.printStackTrace();
}
public static int insert(String sql) throws SQLException{
Connection conn=null;
Statement st=null;
conn=getconn();
//获得连接
int result;
try {
st=conn.createStatement();
//创建插入的sql语句
//返回一个进行此操作的结果,要么成功,要么失败,如果返回的结果>0就是成功,反之失败
result=st.executeUpdate(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
result=0;
e.printStackTrace();
}finally
{
if(null!=conn)
{
conn.close();
conn=null;
}
if(null!=st)
{
st.close();
st=null;
}
}
return result;
}