java监听sql插入失败

来源:百度知道 编辑:UC知道 时间:2024/06/03 05:29:07
我现在写一个程序,把excel文件上传插入mysql里面,现在如果里面有错那就插入失败,问题是我怎么才能知道他失败在第几行?下面是关键代码
String path="E:/shequkecheng01/WebRoot/shangchuan/excel.xls";//Excel文件URL
InputStream is = new FileInputStream(path);//写入到FileInputStream
jxl.Workbook wb = Workbook.getWorkbook(is); //得到工作薄
jxl.Sheet st = wb.getSheet(0);//得到工作薄中的第一个工作表
// Cell cell=st.getCell(1,0);//得到工作表的第一个单元格,即A1
// String content=cell.getContents();//getContents()将Cell中的字符转为字符串
int changdu = st.getRows()-1;//得到行数
// System.out.println(content);
Connection conn = null;
Statement st1 = null;
try {
conn = DBConnectionManager.getInstance().getConnection("sherc");
st1 = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
conn.setAutoCommit(false);
}catch(Exception ex){
ex.getMessage();
}
try{
for(int i=0;i<changdu;i++){
Cell kechengmingcheng =

int i = 0;
try{
for( i < length; i ++){..}
....
}catch{
throw new Exception (i+"行出错了 ");
}

这个你就要用System.out.printf("");你每句下面都放一个。然后。运行的时候。就你可以看到。输出在控制台上面是。。然后你再看输出的在你System.out.printf("这里的的什么内容");你就可以知道哪里一行出错了呀。

。不知道 。你的题目是不是这个意思。
如果错了。我就当灌水

你的changdu变量已经记录的行数,在for循环外设个标志位,int flag=0;当你循环插入数据时,变量i+1指向的就是当前的行数,st1.execute(sql)执行的就是插入当前行的值,在st1.execute(sql)前边加上flag=i+1,记录循环到的行数,当某行插入失败时,就在catch中返回flag,flag保存的就是出错的行数。