Java教程

跑通一篇博客代码假装自己会Java

本文主要是介绍跑通一篇博客代码假装自己会Java,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Java有点像C++和Python混合品种,方方面面都有点像。本科的时候玩过Java和Android编程,有点基础,现在出来搬砖要捡回去,写一篇博客预习一下。

我一般学代码的步骤都是:定义,变量计算,流程控制,文件操作,数据库多线程网络通信。这次把后面三项总结一下。

拿到电脑先配环境,需要装Java的JDK(jdk-8u301-windows-x64.exe),编译器(ideaIU-2021.2.1.exe),mySQL(mysql-installer-community-8.0.26.0.msi),JDBC(mysql-connector-java-8.0.25.tar.gz)

工程路径文件如图:

注意External Libraries中的mysql-conn...,这个是Java连接mySQL的驱动,导入方法是File---Project Structure---Modules---Dependancies---(+)---JARs or Direc...,选择这个文件就行。

工程一共三个文件:

myJDBC.java:使用Java代码操作mySQL数据库进行增删查改

mySocket.java:使用多线程创建socket服务器和客户端

Main.java:如何使用上面文件模块

Main.java

import java.util.Scanner;
import java.util.Vector;

class Java_Demo {
    public void SQL_Demo() {
        myJDBC mj = new myJDBC("caoyi", "root", "admin123");
        if (!mj.connect()) {
            System.out.println("connect failure!");
            return;
        } else {
            System.out.println("connect success!");
        }

        //mj.execute("INSERT INTO info (NAME, SEX, TELE, CODE_TYPE) VALUES ('鬼七', '男', '15600009982', 'excel')");

        Vector<Vector<String>> res = mj.query("select * from info", new String[]{"NAME", "SEX", "TELE"}, 3);

        if (!mj.disconnect()) {
            System.out.println("disconnect failure!");
            return;
        } else {
            System.out.println("disconnect success!");
        }
    }

    public void TCP_Demo() {
        Scanner scan = new Scanner(System.in);
        mySocket ms = new mySocket();
        ms.create_server();

        while(true) {
            System.out.println("y:run n:exit");
            String str = scan.nextLine();
            if(str.equals("y")){
                ms.create_client();
            }else{
                System.exit(0);
            }
        }

    }
}

public class Main {
    public static void main(String[] args) {
        Java_Demo jd = new Java_Demo();
        jd.SQL_Demo();
    }
}

myJDBC.java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;

class myJDBC {

    private String driver;
    private String url;
    private String user;
    private String password;
    private Connection conn;
    private Statement state;
    private ResultSet resultSet;

    //构造函数 参数[数据库名, mysql用户名, mysql密码]
    protected myJDBC(String db_name, String user, String password) {
        this.driver = "com.mysql.jdbc.Driver";
        this.url = "jdbc:mysql://localhost:3306/" + db_name; //3306是mysql默认端口
        this.user = user;
        this.password = password;
    }

    //连接数据库
    public boolean connect() {
        try {
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            //need mysql-connector-java-X.X.XX.jar
            return false;
        }

        try {
            conn = DriverManager.getConnection(url, user, password);
            if (!conn.isClosed())
            {
                return true;
            }
        } catch (SQLException e) {
            return false;
        }

        return true;
    }

    //断开数据库
    public boolean disconnect() {
        try{
            this.conn.close();
        } catch (SQLException e) {
            return false;
        }
        return true;
    }

    //执行SQL语句
    public int execute(String sql) {
        //添加条目 "INSERT INTO info (NAME, SEX, TELE, CODE_TYPE) VALUES ('李四', '男', '16759840883', 'python')"
        //删除条目 "DELETE FROM info WHERE (ID = '2')"
        //修改条目 "UPDATE info SET CODE_TYPE = 'C++' WHERE (ID = '2')"

        int stat_id = -1;
        try {
            state = conn.createStatement();
            stat_id = state.executeUpdate(sql);
        } catch (SQLException e) {
            return 0;
        }
        return stat_id;
    }

    //查询内容 以二维容器的形式输出
    public Vector<Vector<String>> query(String sql, String[] labels, int label_num) {
        Vector query_data = new Vector<Vector<String>>();
        try {
            state = conn.createStatement();
            resultSet = state.executeQuery(sql);
            while(resultSet.next()) {
                Vector data = new Vector<String>();
                for(int i=0;i<label_num;i++)
                {
                    String label = labels[i];
                    String value = resultSet.getString(label);
                    data.add(value);
                }
                query_data.add(data);
            }
            resultSet.close();
        } catch (SQLException e) {
            return query_data;
        }
        return query_data;
    }
}

mySocket.java

import java.io.*;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;

class server_thread extends Thread {
    private ServerSocket server;
    private Socket socket;
    private int port;
    private DataInputStream dis;
    private DataOutputStream dos;

    public void config(int listen_port) {
        this.port = listen_port;
    }

    public void run() {
        try {
            server = new ServerSocket(this.port);
            System.out.println("waiting connect...");
            //服务器循环 一次性连接
            while(true) {
                socket = server.accept();
                System.out.println("connecting!");
                dis = new DataInputStream(socket.getInputStream());
                String recv = dis.readUTF();
                System.out.println(recv);
                socket.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

class client_thread extends Thread {
    private String server_ip;
    private int port;
    private Socket socket;
    private DataInputStream dis;
    private DataOutputStream dos;

    public void config(String server_ip, int listen_port) {
        this.server_ip = server_ip;
        this.port = listen_port;
    }

    public void run() {
        try {
            socket = new Socket(server_ip, port);
            dos = new DataOutputStream(socket.getOutputStream());
            dos.writeUTF("Hello Server, I am Client.");
            socket.close();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

public class mySocket {
    public void print_info() {
        try {
            InetAddress ia = InetAddress.getLocalHost();
            String local_name = ia.getHostName();
            String local_ip = ia.getHostAddress();
            System.out.println("HostName: "+local_name);
            System.out.println("IPAddr: "+local_ip);
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }

    void create_server() {
        server_thread st = new server_thread();
        st.config(8998);
        st.start();
    }

    void create_client() {
        client_thread st = new client_thread();
        st.config("127.0.0.1", 8998);
        st.start();
    }
}

这篇关于跑通一篇博客代码假装自己会Java的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!