包 mysql-connector-java-8.0.17.jar
Main class
package src;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Main extends Method {
static Connection conn;//sql连接
public static void main(String[] args) {
new Main();
}
public Main() {
try {
conn = DriverManager.getConnection("jdbc:mysql://ip:3306/数据库?useUnicode=true&characterEncoding=UTF-8","账号","密码");
System.out.println("数据库连接成功!");
//Help word
help();
} catch (SQLException e) {
e.printStackTrace();
}finally {
try {
conn.close();
println("已关闭sql连接通道\n正在退出系统\n退出系统");
System.exit(0);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
方法类
package src;
import java.sql.SQLException;
import java.util.Scanner;
public class Method {
static SQLTable SqlClass = new SQLTable();
static Scanner Scan = new Scanner(System.in);
static Main m = new Main();
public static void Switch() throws SQLException {
String tableName;
print("");
String input = Scan.next();
switch (input) {
case "help":
help();
break;
case "exit":
break;
case "1":
SqlClass.showtables(Main.conn);
break;
case "2":
tableName = input("请输入表名");
SqlClass.show(Main.conn,tableName);
break;
case "3":
tableName = input("请输入表名");
print("请输入姓名,年龄 PS:格式 宋** 18 ");
String data[] = new String[2];
//遍历输入
for(int i = 0 ; i<data.length;i++)
{
data[i]=Scan.next();
}
String name = data[0];
int age = Integer.valueOf(data[1]);
SqlClass.add(Main.conn,tableName, name, age);
break;
case "4":
tableName = input("请输入表名");
String delName = input("请输入删除的姓名");
SqlClass.del(Main.conn, tableName, delName);
break;
case "5":
tableName = input("请输入表名");
String queryname = input("请输入查询的姓名");
SqlClass.query(Main.conn, tableName, queryname);
break;
case "6":
tableName = input("请输入表名");
String updatename = input("请输入要更新年龄的姓名");
print("请输入要更新的年龄");
int updateAge = Scan.nextInt();
SqlClass.update(Main.conn, tableName, updatename,updateAge);
break;
default:
help();
break;
}
}
//获取输入方法 参数:显示给用户的提示
public static String input(String str) {
print(str);
str = Scan.next();
return str;
}
public static void help() throws SQLException {
/*
查看表列表
查看表数据
增
删
改
查
*/
println("help命令帮助文档\n"+
"exit命令退出系统\n"+
"1:查看表列表\n" +
"2:查看表数据\n" +
"3:增加记录\n" +
"4:删除记录\n" +
"5:查询记录\n" +
"6:更新年龄"
);
//流程控制
Switch();
}
public static void exit() {
}
public static void println(String str) {
System.out.println(str);
}
public static void print(String str) {
System.out.print(str+"\nSQL:>");
}
}
sql语句类
package src;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class SQLTable extends Method{
Statement stat;
ResultSet rs ;
//添加记录 参数:sql连接 表名 姓名 年龄
public void add(Connection conn, String tableName , String name , int age ) throws SQLException {
String sql = "INSERT INTO "+tableName+"(name,age) VALUES(\""+name+"\","+age+")";
stat = conn.createStatement();
stat.execute(sql);//执行sql语句并返回结果集
if(stat != null)
System.out.println("数据添加成功");//提示数据结果
else
System.out.println("数据添加失败");
Switch();
}
//删除记录 参数:sql连接 表名 姓名
public void del(Connection conn, String tableName , String delName ) throws SQLException {
String sql ="DELETE FROM "+tableName+" WHERE name=\""+delName+"\"";
stat = conn.createStatement();
stat.execute(sql);//执行sql语句并返回结果集
if(stat != null)//提示数据结果
System.out.println("数据删除成功");
else
System.out.println("数据删除失败|可能无此学生");
Switch();
}
//查询记录 参数:sql连接 表名 姓名
public void query(Connection conn, String tableName , String queryName ) throws SQLException{
String sql ="SELECT * FROM "+tableName+" WHERE name=\""+queryName+"\" ";
stat = conn.createStatement();
rs = stat.executeQuery(sql);//执行sql语句并返回结果集
if(rs != null) {
System.out.println("数据搜索成功");//提示数据结果
System.out.println("序号\t姓名\t年龄");
while (rs.next()) {//显示表数据
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println(id+"\t"+name+"\t"+age);
}
}
else
{
System.out.println("数据搜索失败");
}
Switch();
}
//更新记录 参数:sql连接 表名 姓名 更新姓名 更新年龄
public void update(Connection conn, String tableName , String name , int updateAge ) throws SQLException {
String sql ="UPDATE "+tableName+" SET age="+updateAge+" WHERE name=\""+name+"\"";
stat = conn.createStatement();
stat.execute(sql);
if(stat != null)
System.out.println("数据更新成功");//提示数据结果
else
System.out.println("数据更新失败");
Switch();
}
//显示所有表数据 参数:sql连接 表名
public void show(Connection conn, String tableName ) throws SQLException {
String sql = "SELECT * FROM `"+tableName+"` ";
stat = conn.createStatement();
rs = stat.executeQuery(sql);//执行sql语句并返回结果集
System.out.println("序号\t姓名\t年龄");
while (rs.next()) {//显示表
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println(id+"\t"+name+"\t"+age);
}
Switch();
}
//显示表列表
public void showtables(Connection conn) throws SQLException {
String sql = "SHOW TABLES";
stat = conn.createStatement();
rs = stat.executeQuery(sql);//执行sql语句并返回结果集
//遍历结果集
while (rs.next()) {
System.out.println("表名:\t"+rs.getString(1));//显示表名
}
if(rs.next())
System.out.println("无表");//提示数据库无表
Switch();
}
}
如果无法连接数据库,请把你的数据库设置一个%的用户,linux服务器可能要设置防火墙
linux:关闭防火墙systemctl stop firewalld.service
linux:开启防火墙systemctl start firewalld.service
设置开放3306端口:https://www.cnblogs.com/uoar/p/8056174.html【如有侵权,联系删除】
注:阿里云服务器centOS过程,以下是阿里云售后的技术人员提供
centos7,防火墙放行3306端口可输入命令: firewall-cmd --permanent --add-port=3306/tcp 然后重启防火墙: systemctl restart firewalld