用java中的try - catch捕获与sql相关的错误(记录错误)

时间:2011-09-26 12:48:16

标签: java jdbc error-handling

我使用log4j在java桌面应用程序中记录消息(在Eclipse上创建这个应用程序)。

这项工作的一部分是使用JDBC将csv(逗号分隔值)数据批量插入sql server数据库。

我希望在批量插入过程中捕获任何错误,并记录发生错误的特定记录的详细信息,然后恢复批量插入的工作。

下面给出了进行批量插入的相关代码,如何对异常处理进行编码以满足我的需求?还有一个问题 - 目前堆栈跟踪打印到控制台上,我想将其记录到日志文件中(使用Log4j)...我该怎么做?

public void insertdata(String filename)
{
    String path = System.getProperty("user.dir");
    String createString = "BULK INSERT Assignors FROM  '" + path + "\\" +filename+ ".txt' WITH (FIELDTERMINATOR = ',')";   
    System.out.println(" Just before try block...");

    try  
       { 
            // Load the SQLServerDriver class, build the 
            // connection string, and get a connection 
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
            String connectionUrl = "jdbc:sqlserver://ARVIND-PC\\SQLEXPRESS;" + 
                                    "database=test01;" + 
                                    "integratedSecurity=true;"; 
            Connection con = DriverManager.getConnection(connectionUrl); 
            System.out.println("Connected."); 

            // Create and execute an SQL statement that returns some data.  
            String SQL = "BULK INSERT dbo.Assignor FROM  '" + path + "\\" +filename+ ".txt' WITH (FIELDTERMINATOR = ',')";

            Statement stmt = con.createStatement();  
            //ResultSet rs = stmt.executeQuery(SQL);
            Integer no_exec;
            no_exec=stmt.executeUpdate(SQL);
            // Iterate through the data in the result set and display it.  
            //while (rs.next())  
            //{  
            // //System.out.println(rs.getString(1) + " " + rs.getString(2));
            //  System.out.println(" Going through data");
            //}

            System.out.println("Number of rows updated by the query=" + no_exec);
       }  
       catch(Exception e)  
       { 
            System.out.println(e.getMessage()); 
            e.printStackTrace(); 
            System.exit(0);  
       } 
}

1 个答案:

答案 0 :(得分:1)

您是否阅读过Short Introduction to log4j?你需要一个日志实例,从那里剩下的就是蛋糕了。