2012-08-07 15 views
0

我尝试了下面的程序来连接数据库并从中取出数据。我可以将其存储为CSV。当我运行该程序时,javaw.exe进程在一段时间后自行终止。你能否请告知我如何克服这一点,并可以运行到最后。请在下面找到建立数据连接的Java程序自己终止了

import java.io.BufferedOutputStream; 
import java.sql.CallableStatement; 
import java.io.File; 
import java.io.FileOutputStream; 
import java.io.OutputStreamWriter; 
import java.io.Writer; 
import java.sql.*; 
import java.util.ArrayList; 



public class myLogin{ 
    public static void main(String args[]) { 
    String url = ""; 

String queryString; 
String temp; 
    try { 
     Class.forName("com.sybase.jdbcx.SybDriver"); 
     System.out.println("got it"); 
    } 
    catch(Exception e) { 
     System.out.println("Failed to load sybase driver."); 
     return; 
    } 
    try { 
     Connection con = DriverManager.getConnection(url, "", ""); 

     Statement select = con.createStatement(); 
     queryString=" "; 
     select.executeQuery(queryString); 
     ResultSet myResultSet = select.executeQuery(queryString); 
     System.out.println("Got results:"); 
     String m="details.csv"; 
     FileOutputStream fos=new FileOutputStream(m,false); 

     Writer out = new OutputStreamWriter(new BufferedOutputStream(fos)); 

     while(myResultSet.next()) { 
      int ncols = myResultSet.getMetaData().getColumnCount(); 

      for (int i=1; i<(ncols+1); i++) { 
       System.out.print(myResultSet.getMetaData().getColumnName (i)); 
       if (i<ncols) System.out.print(","); else System.out.println(); 
      } 

      do { 
       for (int i=1; i<(ncols+1); i++) { 
        out.append(myResultSet.getString(i)); 
        System.out.print(myResultSet.getString(i)); 
        if (i<ncols) System.out.print(","); else System.out.println(); 
       } 
      } while (myResultSet.next()); 
     } 
     select.close(); 
     con.close(); 
    } 
    catch(Exception e) { 
     e.printStackTrace(); 
    } 
    } 
} 
+0

请格式化您的代码;这样做会增加可读性。 – Vulcan 2012-08-07 05:02:39

+1

你得到堆栈跟踪了吗? – 2012-08-07 05:03:18

回答

0

javaw.exe的片段是java.exe的 “Windows” 版。基本上这创建了一个不需要或输出到控制台的进程。

如果您从控制台运行javaw.exe,它会出现,就好像什么也没有发生(该命令将立即返回)

尝试,而是运行java.exe到控制台运行程序。

+0

我无法理解你。我在eclipse中做这个,并且我输出打印到控制台终止。 – crazypaladin 2012-08-07 05:07:49

+0

基本上,根据你的描述,你试图使用“windows”进程(没有UI)来运行“控制台”应用程序。你可以发布输出吗? – MadProgrammer 2012-08-07 05:09:01

+0

这个文件怎么样,它是否被创建? – MadProgrammer 2012-08-07 05:09:30