Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

java [deprecation] readLine() in DataInputStream has been deprecated?

I wrote a java sever socket,it could connect postgresql and return values,but when I compile javac -deprecation SQLServer.java And why warning cannot work? It didn't have any error.How can I fix it?

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

code:

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());
        }
       }
}
like image 834
alex Avatar asked May 19 '26 00:05

alex


1 Answers

From DataInputStream#readLine javadoc:

Deprecated. This method does not properly convert bytes to characters. As of JDK 1.1, the preferred way to read lines of text is via the BufferedReader.readLine() method. Programs that use the DataInputStream class to read lines can be converted to use the BufferedReader class by replacing code of the form:

    DataInputStream d = new DataInputStream(in);

with:

    BufferedReader d = new BufferedReader(new InputStreamReader(in));
like image 97
Luiggi Mendoza Avatar answered May 21 '26 16:05

Luiggi Mendoza



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!