我编写了一个java服务器套接字,它可以连接postgresql并返回值,但是当我编译javac-deprecation SQLServer.java时
为什么警告不能起作用?
它没有任何错误。我怎样才能修复它?

SQLServer.java:66: warning: [deprecation] readLine() in DataInputStream has been     deprecated
                            query = in.readLine();
                                      ^
1 warning

代码:
import java.io.*;
import java.net.*;
import java.util.*;
import java.sql.*;

public class SQLServer extends Thread{
    public static final int MYPORT = 6700;
    ServerSocket listen_socket;

        public SQLServer(){
        try{
            listen_socket = new ServerSocket (MYPORT);
        }
        catch(IOException e) {System.err.println(e);}
        this.start();
    }
    public void run(){
        try{
            while(true)
            {
                Socket client_socket = listen_socket.accept();
                SQLConnection c = new SQLConnection (client_socket);
            }
        }
        catch(IOException e) {System.err.println(e);}
    }
    public static void main(String[] argv){
       new SQLServer();
    }
}
class SQLConnection extends Thread{
    protected Socket client;
    protected DataInputStream in;
    protected PrintStream out;
    protected String query;

    public SQLConnection (Socket client_socket){
        client = client_socket;
        try{
            in = new DataInputStream(client.getInputStream());
            out = new PrintStream (client.getOutputStream());
        }
        catch(IOException e) {
            System.err.println(e);
            try {client.close();}
            catch (IOException e2) {};
            return;
        }
        this.start();

    }

    public void run(){
        try{
            query = in.readLine();
            System.out.println("read query string <" + query + ">");
            do_sql();
            //out.println(d.toString());
        }
        catch (IOException e) {}
        finally{
            try {client.close();}
            catch (IOException e) {};
        }
    }
        public void do_sql(){
        Connection con; // database connection object
        Statement stmt; // SQL statement object
        ResultSet rs;   // SQL query results
        ResultSetMetaData rsmd;
        boolean more;   // "more rows found" switch
        String dsn = "jdbc:postgresql://localhost/postgres";
        String user = "postgres";
        String password = "123456";
        String record;
        int colcount, i;

        try{
            Class.forName ("org.postgresql.Driver");
            con = DriverManager.getConnection(dsn, user, password);

            stmt = con.createStatement();

            rs = stmt.executeQuery(query);

            more = rs.next();
            if (!more) {
                out.println("No rows found.");
                return;
            }
            rsmd = rs.getMetaData();
            colcount = rsmd.getColumnCount();
            System.out.println(colcount + " columns in result set");

            while (more) {
                //build result string
                record = "";
                for (i=1; i <= colcount; i++){
                   record = record.concat(rs.getString(i) + "  ");
                }
            out.println(record);
            System.out.println(record);
            more = rs.next();
        }
        rs.close();
        stmt.close();
        con.commit();
        con.close();
        }
        catch (Exception e)
        {
          System.out.println("Exception occurred" + e.toString());
        }
       }
}

最佳答案

DataInputStream#readLinejavadoc:
已弃用。此方法无法将字节正确转换为字符。从JDK 1.1开始,阅读文本行的首选方法是通过BufferedReader.readLine()方法。使用DataInputStream类读取行的程序可以通过替换以下形式的代码转换为使用BufferedReader类:

    DataInputStream d = new DataInputStream(in);

使用:
    BufferedReader d = new BufferedReader(new InputStreamReader(in));

关于java - 是否已弃用DataInputStream中的java [deprecation] readLine()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18961673/

10-10 23:56