Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
建立数据连接的Java程序自行终止_Java_Jdbc_Sybase - Fatal编程技术网

建立数据连接的Java程序自行终止

建立数据连接的Java程序自行终止,java,jdbc,sybase,Java,Jdbc,Sybase,我尝试使用下面的程序连接到数据库并从中提取数据。我以后可以将其存储为CSV。当我运行程序时,javaw.exe进程在一段时间后自行终止。你能告诉我如何克服这一点,并将其进行到底吗。请查找下面的代码片段 import java.io.BufferedOutputStream; import java.sql.CallableStatement; import java.io.File; import java.io.FileOutputStream; import java.io.OutputSt

我尝试使用下面的程序连接到数据库并从中提取数据。我以后可以将其存储为CSV。当我运行程序时,javaw.exe进程在一段时间后自行终止。你能告诉我如何克服这一点,并将其进行到底吗。请查找下面的代码片段

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();
    }
  }
}
import java.io.BufferedOutputStream;
导入java.sql.CallableStatement;
导入java.io.File;
导入java.io.FileOutputStream;
导入java.io.OutputStreamWriter;
导入java.io.Writer;
导入java.sql.*;
导入java.util.ArrayList;
公共类myLogin{
公共静态void main(字符串参数[]){
字符串url=“”;
串查询串;
字符串温度;
试一试{
Class.forName(“com.sybase.jdbcx.SybDriver”);
System.out.println(“明白了”);
}
捕获(例外e){
System.out.println(“未能加载sybase驱动程序”);
返回;
}
试一试{
Connection con=DriverManager.getConnection(url,“,”);
语句select=con.createStatement();
queryString=“”;
select.executeQuery(查询字符串);
ResultSet myResultSet=select.executeQuery(queryString);
System.out.println(“获得结果:”;
字符串m=“details.csv”;
FileOutputStream fos=新FileOutputStream(m,false);
Writer out=新的输出流Writer(新的缓冲输出流(fos));
while(myResultSet.next()){
int ncols=myResultSet.getMetaData().getColumnCount();

for(int i=1;i
javaw.exe
java.exe
的“Windows”版本。基本上,这创建了一个不需要或不输出到控制台的进程

如果从控制台运行
javaw.exe
,它将显示为什么都没有发生(命令将立即返回)


请尝试运行
java.exe
在控制台中运行您的程序。

请格式化您的代码;这样做将增加可读性。您是否获得堆栈跟踪?我无法理解您的意思。我在eclipse中执行此操作,并终止了对控制台的输出打印。基本上,根据您的描述,您正在尝试运行“控制台”使用“windows”进程(没有UI)的应用程序。那么你能发布输出吗?文件呢,创建了吗?抱歉,我不能发布输出。这是一些敏感数据。上面的内容只是打印到控制台,当我尝试使用小结果集时,控制台被打印出来。但是对于大输出,进程被终止,我没有得到堆栈跟踪。我将代码更改为创建和写入但文件刚刚创建,输出未写入文件。