Java 使try-catch语句识别各种错误

Java 使try-catch语句识别各种错误,java,sql,exception,try-catch,Java,Sql,Exception,Try Catch,您好,我正在使用JAVA,制作一个swt应用程序,可以直接从文本文件插入数据库。我正在努力完成应用程序的最后部分,即错误检测部分。我可以很好地插入数据库,它会在应该插入的地方给出一个错误。我想做的是,如果有多个错误,它会指出有多个错误,而不仅仅是一个。现在,我的代码仍然在数据库中插入文本文件的正确行,并且没有插入错误的行,但它只标记了一个错误。有没有一种方法可以在catch子句周围放置if语句,或者有没有一种更有效的方法来识别多个错误??我想对所有SQL异常(如错误的字段、错误的值类型等)执行此

您好,我正在使用JAVA,制作一个swt应用程序,可以直接从文本文件插入数据库。我正在努力完成应用程序的最后部分,即错误检测部分。我可以很好地插入数据库,它会在应该插入的地方给出一个错误。我想做的是,如果有多个错误,它会指出有多个错误,而不仅仅是一个。现在,我的代码仍然在数据库中插入文本文件的正确行,并且没有插入错误的行,但它只标记了一个错误。有没有一种方法可以在catch子句周围放置if语句,或者有没有一种更有效的方法来识别多个错误??我想对所有SQL异常(如错误的字段、错误的值类型等)执行此操作

        buttoninsert.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseDown(MouseEvent e) {
            System.out.println("create jdbc connection using properties file");

            Connection con = null;


            // use try becuase it tends to fail sometimes and we want error messages

            try {

                //load properties file we have created
                Properties prop = loadPropertiesFile();

                //declare vars and get the properties at the same time
                String driverClass = prop.getProperty("SQLSERVERJDBC.driver");
                String url = prop.getProperty("SQLSERVERJDBC.url");
                String username = prop.getProperty("SQLSERVERJDBC.username");
                String password = prop.getProperty("SQLSERVERJDBC.password");


                // have to instance driver
                Class.forName(driverClass).newInstance();

                // make connection object using the previous things as parameters
                con = DriverManager.getConnection(url, username, password);

                //this if is to verify the connection
                if (con != null) {
                    System.out.println("connection created successfully using properties file");


                }

                else {
                    System.out.println(" unable to create connection");

                }


                BufferedReader reader = new BufferedReader(new FileReader(
                        "C:\\Users\\darroyo\\Documents\\pruebasx.txt"));

                ArrayList<String> array1 = new ArrayList<String>();
                // Read line from file.
                while (true) {
                    String line = reader.readLine();
                    if (line == null) {

                        break;
                    }
                    // Split line on space.
                    String[] parts = line.split("");
                    //part in parts
                    for (String part : parts) {

                        //part is the element in this case each fix tag with value
                        array1.add(part);

                    }
                    String query = " insert into FRONTMC.HECHO (folio_hecho, folio_orden, emisora, serie,"
                            + "clave_sentido, titulos_hecho, precio, importe, liquidacion, contraparte, id_estatus, isin, contrato,"
                            + "secondary_exec_id, exec_id, F11_ClOrdID, fecha_recepcion, fecha_sentra)"
                                + " values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,convert(varchar(30),cast(? as datetime),120),convert(varchar(30),cast(? as datetime),120))";

                              // create the mysql insert preparedstatement
                              PreparedStatement preparedStmt = con.prepareStatement(query);


                              for(int counter =0; counter< array1.size();counter++){
                                  if(array1.get(counter).substring(0, 3).equals("37=")){
                                      preparedStmt.setString (1, array1.get(counter).substring(3));

                                  }
                                  if(array1.get(counter).substring(0, 3).equals("37=")){
                                      preparedStmt.setString (2, array1.get(counter).substring(3));
                                  }

                                  // change emisora and serie to 48 with bd
                                  if(array1.get(counter).substring(0, 3).equals("49=")){
                                      preparedStmt.setString (3, array1.get(counter).substring(3));
                                  }

                                  if(array1.get(counter).substring(0, 4).equals("447=")){
                                      preparedStmt.setString (4, array1.get(counter).substring(4));
                                  }
                                  if(array1.get(counter).substring(0, 3).equals("54=")){
                                      preparedStmt.setString (5, array1.get(counter).substring(3));
                                  }
                                  if(array1.get(counter).substring(0, 3).equals("32=")){
                                      preparedStmt.setString (6, array1.get(counter).substring(3));
                                  }
                                  if(array1.get(counter).substring(0, 3).equals("31=")){
                                      preparedStmt.setString (7, array1.get(counter).substring(3));
                                  }
                                  if(array1.get(counter).substring(0, 4).equals("381=")){
                                      preparedStmt.setString (8, array1.get(counter).substring(4));
                                  }
                                  if(array1.get(counter).substring(0, 3).equals("63=")){
                                      preparedStmt.setString (9, array1.get(counter).substring(3));
                                  }
                                  if(array1.get(counter).substring(0, 4).equals("448=")){
                                      preparedStmt.setString (10, array1.get(counter).substring(4));
                                  }
                                  if(array1.get(counter).substring(0, 4).equals("150=")){
                                      preparedStmt.setString (11, array1.get(counter).substring(4));
                                  }
                                  if(array1.get(counter).substring(0, 3).equals("48=")){
                                      preparedStmt.setString (12, array1.get(counter).substring(3));
                                  }
                                  if(array1.get(counter).substring(0, 2).equals("1=")){
                                      preparedStmt.setString (13, array1.get(counter).substring(2));
                                  }
                                  if(array1.get(counter).substring(0, 4).equals("527=")){
                                      preparedStmt.setString (14, array1.get(counter).substring(4));
                                  }
                                  if(array1.get(counter).substring(0, 3).equals("17=")){
                                      preparedStmt.setString (15, array1.get(counter).substring(3));
                                  }
                                  if(array1.get(counter).substring(0, 3).equals("11=")){
                                      preparedStmt.setString (16, array1.get(counter).substring(3));
                                  }
                                  if(array1.get(counter).substring(0, 3).equals("52=")){

                                      String date = array1.get(counter).substring(3);

                                        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd");
                                        SimpleDateFormat sdf2 = new SimpleDateFormat("dd/MM/yyyy");
                                        String ds2 = sdf2.format(sdf1.parse(date));
                                        String x = date.substring(9, 21);
                                        String newfecha1 = ds2+" "+x;


                                      preparedStmt.setString (17, newfecha1);
                                  }
                                  if(array1.get(counter).substring(0, 3).equals("52=")){

                                      String date = array1.get(counter).substring(3);

                                        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd");
                                        SimpleDateFormat sdf2 = new SimpleDateFormat("dd/MM/yyyy");
                                        String ds2 = sdf2.format(sdf1.parse(date));
                                        String x = date.substring(9, 21);
                                        String newfecha1 = ds2+" "+x;


                                      preparedStmt.setString (18, newfecha1);
                                  }

                              }

                              // execute the preparedstatement


                              preparedStmt.execute();
                              displaymsjfix.setText("exitoso");    
                }

                System.out.println(array1);


                reader.close();

                //creating the statement(should check to use prepared statement in the future

                // fecha recp y fecha sentra in query and for and ? and order



                          //notifies you that it was completed
                System.out.println("insert complete");
                // loop to check the digits ex. for() array.1get(counter).substring(0,3).equals("23=")

                //error messages
            }catch (SQLException eb) {
                eb.printStackTrace();
            } 

            //ERROR MESSAGE FECHA just get line number
            catch (Exception eb) {

                System.out.println("Error in date ");
            } finally {

                try {
                    if (con != null) {
                        con.close();
                    }
                } catch (Exception ex) {
                    ex.printStackTrace();
                }

            }



        }
    });
buttoninsert.addMouseListener(新的MouseAdapter(){
@凌驾
公共无效mouseDown(MouseEvent e){
println(“使用属性文件创建jdbc连接”);
连接con=null;
//使用try,因为它有时会失败,我们需要错误消息
试一试{
//加载我们创建的属性文件
Properties prop=loadPropertiesFile();
//声明变量并同时获取属性
String driverClass=prop.getProperty(“SQLSERVERJDBC.driver”);
字符串url=prop.getProperty(“SQLSERVERJDBC.url”);
字符串username=prop.getProperty(“SQLSERVERJDBC.username”);
字符串password=prop.getProperty(“SQLSERVERJDBC.password”);
//必须使用实例驱动程序
类.forName(driverClass.newInstance();
//使用前面的内容作为参数创建连接对象
con=DriverManager.getConnection(url、用户名、密码);
//这是为了验证连接
如果(con!=null){
System.out.println(“使用属性文件成功创建的连接”);
}
否则{
System.out.println(“无法创建连接”);
}
BufferedReader reader=新BufferedReader(新文件读取器(
“C:\\Users\\darroyo\\Documents\\pruebasx.txt”);
ArrayList array1=新的ArrayList();
//从文件中读取行。
while(true){
字符串行=reader.readLine();
如果(行==null){
打破
}
//在空间上分割线。
String[]parts=line.split(“”);
//部分地
用于(字符串部分:部分){
//在这种情况下,part是元素,每个fix标记都有值
1.增加(部分);
}
String query=“插入FRONTMC.HECHO(对开对开、对开对开对开、对开对开对开、对开对开对开、对开对开对开、对开对开对开
+clave_Senido、Titolos_hecho、precio、importe、liquidacion、contraparte、Idu estatus、isin、contrato、
+二级执行id,执行id,F11克隆id,接收,接收
+“值(?,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,转换(varchar(30),cast(?as datetime),120),转换(varchar(30),cast(?as datetime),120));
//创建mysql insert preparedstatement
PreparedStatement preparedStmt=con.prepareStatement(查询);
对于(int counter=0;计数器List<String> exceptionList = new ArrayList<String>();
while(true)
{
   //Your code
    try
     {
        //sql statements and prepared statements
     }
     catch(SqlException e)
     {
            exceptionList.add(e.getMessage());
            continue;
     }
}