ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-09-06 22:32:34  阅读:164  来源: 互联网

标签:java String 跑通 private server 假装 import Java public


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,String,跑通,private,server,假装,import,Java,public
来源: https://blog.csdn.net/XLcaoyi/article/details/120145938

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有