先是这个 然后我一搜这个问题 发现了错误在
因为一个这个例子
于是 我!把注册 删除等等都用了这个executeQuery()方法
后来我看了几个网站 重点来了 如果你的SQL 语句是诸如update,insert的更新语句,应该用statement的execute()方法,如果用的是statement的executeQuery()就会出现上诉问题
留下了感动的泪水 终于找到原因了 结果 我又又又报错了
好家伙 当天晚上给我崩溃地不想写了 第二天中午继续 我丢 我发现 我的sql语句里面 from变成form了 哭唧唧 总之经过99八十一难 作为一个只学了MySQL一两天的我! 写粗来了 留下了争气的泪水
展示一波我的代码
先出我的Java代码
public class User {
private String userPwd;
private String userName;
public User(String userName, String userPwd) {
this.userName = userName;
this.userPwd = userPwd;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
public String toString() {
return "User [userName=" + userName + ", userPwd=" + userPwd + "]";
}
}
public class DatabaseUtil {
// 数据库连接对象
private Connection conn = null;
// 操作句柄[执行SQL语句]
private Statement stat = null;
// 结果集对象[获取查询的结果]
private ResultSet rs = null;
// 连接相关的字符串对象
String url = "jdbc:mysql://localhost:3306/homework?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8";
String username = "root";
String password = "a123456*";
// 通过反射机制讲jdbc的驱动jar包 动态的加载到JVM
static {
try {
Class.forName("com.mysql.cj.jdbc.Driver");//// forName() 返回与带有给定字符串名的类或接口相关联的 Class 对象
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
// 修改密码功能
public void modify(String name, String pwd) {
String sql = "update users set user_pwd='" + pwd + "' where user_name='" + name + "'";
try {
// 建立连接通道
// DriverManager 管理一组 JDBC 驱动程序的基本服务。java.sql
// getConnection() 返回: 到 URL 的连接
conn = DriverManager.getConnection(url, username, password);
// System.out.println("连接成功...");
// 获取一个执行sql语句的对象
// Statement 用于执行静态 SQL 语句并返回它所生成结果的对象。
// createStatement()创建一个 Statement 对象来将 SQL 语句发送到数据库。
stat = conn.createStatement();
// 执行sql语句
// 执行给定 SQL语句,语句可能为 INSERT、UPDATE 或 DELETE 语句,或不返回内容
stat.execute(sql);
System.out.println("修改成功");
} catch (SQLException e) {
System.out.println("修改失败");
e.printStackTrace();
} finally {
if (null != stat) {
try {
stat.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (null != conn) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
// 删除用户功能
public void delete(String name) {
String sql = "delete from users where user_name='" + name + "'";
try {
// 建立连接通道
// DriverManager 管理一组 JDBC 驱动程序的基本服务。java.sql
// getConnection() 返回: 到 URL 的连接
conn = DriverManager.getConnection(url, username, password);
// System.out.println("连接成功...");
// 获取一个执行sql语句的对象
// Statement 用于执行静态 SQL 语句并返回它所生成结果的对象。
// createStatement()创建一个 Statement 对象来将 SQL 语句发送到数据库。
stat = conn.createStatement();
// 执行sql语句
// 执行给定 SQL语句,语句可能为 INSERT、UPDATE 或 DELETE 语句,或不返回内容
stat.execute(sql);
System.out.println("删除成功");
} catch (SQLException e) {
System.out.println("删除失败");
e.printStackTrace();
} finally {
if (null != stat) {
try {
stat.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (null != conn) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
// 注册用户功能
public void register(String name, String pwd) {
String sql = "insert into users values('" + name + "','" + pwd + "')";
try {
// 建立连接通道
// DriverManager 管理一组 JDBC 驱动程序的基本服务。java.sql
// getConnection() 返回: 到 URL 的连接
conn = DriverManager.getConnection(url, username, password);
// System.out.println("连接成功...");
// 获取一个执行sql语句的对象
// Statement 用于执行静态 SQL 语句并返回它所生成结果的对象。
// createStatement()创建一个 Statement 对象来将 SQL 语句发送到数据库。
stat = conn.createStatement();
// 执行sql语句
// 执行给定 SQL语句,语句可能为 INSERT、UPDATE 或 DELETE 语句,或不返回内容
stat.execute(sql);
System.out.println("注册成功");
} catch (SQLException e) {
System.out.println("注册失败");
e.printStackTrace();
} finally {
if (null != stat) {
try {
stat.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (null != conn) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
// 登录
public boolean isLogin(User user) {
boolean login_win = false;
String sql = "select * from users where user_name='" + user.getUserName() + "' and user_pwd='"
+ user.getUserPwd() + "'";
try {
// 建立连接通道
// DriverManager 管理一组 JDBC 驱动程序的基本服务。java.sql
// getConnection() 返回: 到 URL 的连接
conn = DriverManager.getConnection(url, username, password);
// System.out.println("连接成功...");
// 获取一个执行sql语句的对象
// Statement 用于执行静态 SQL 语句并返回它所生成结果的对象。
// createStatement()创建一个 Statement 对象来将 SQL 语句发送到数据库。
stat = conn.createStatement();
// 执行sql语句
// 执行给定 SQL语句,语句可能为 INSERT、UPDATE 或 DELETE 语句,或不返回内容
rs = stat.executeQuery(sql);
if (rs.next()) {
login_win = true;
}
} catch (SQLException e) {
System.out.println("连接失败....");
e.printStackTrace();
} finally {
if (null != rs) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (null != stat) {
try {
stat.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (null != conn) {
try {
// 关闭连接
// 立即释放此 Connection 对象的数据库和 JDBC 资源,而不是等待它们被自动释放
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return login_win;
}
}
public class Test {
public static void main(String[] args) {
Test t = new Test();
System.out.println("请选择你的操作:a.登录用户 b.修改密码 c.删除用户 d.注册用户");
Scanner sc = new Scanner(System.in);
String function = sc.next().trim();
switch (function) {
case "a":
t.login();
break;
case "b":
t.modify();
break;
case "c":
t.delete();
break;
case "d":
t.register();
break;
default:
System.out.println("输入格式有误,请重新输入");
}
}
// 修改密码
public void modify() {
DatabaseUtil dbUtil = new DatabaseUtil();
Scanner s = new Scanner(System.in);
System.out.println("请输入用户名:");
String uname = s.next().trim();
System.out.println("请输入新密码:");
String upwd = s.next().trim();
dbUtil.modify(uname, upwd);
}
// 删除
public void delete() {
DatabaseUtil dbUtil = new DatabaseUtil();
System.out.println("请输入要删除的用户名");
Scanner s = new Scanner(System.in);
String uname = s.next().trim();
dbUtil.delete(uname);
}
public void login() {
DatabaseUtil dbUtil = new DatabaseUtil();
Scanner s = new Scanner(System.in);
System.out.println("请输入用户名:");
String uname = s.next().trim();
System.out.println("请输入密码:");
String upwd = s.next().trim();
User user = new User(uname, upwd);
if (dbUtil.isLogin(user)) {
System.out.println("登录成功...");
} else {
System.out.println("登陆失败...");
}
}
// 注册用户
public void register() {
DatabaseUtil dbUtil = new DatabaseUtil();
Scanner s = new Scanner(System.in);
System.out.println("请输入用户名:");
String uname = s.next().trim();
System.out.println("请输入密码:");
String upwd = s.next().trim();
dbUtil.register(uname, upwd);
}
}
我的MySQL代码
create table homework
(
user_name varchar(20),
user_pwd varchar(20)
);
insert into users values('admin','123');
insert into users values('aa','111');
insert into users values('bb','222');
select * from homework;
提几点要注意的:
我的MySQL版本是8.0.21的,所以我的是这样的
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/homework?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8";
对了 jdbc和你的MySQL版本要一样
MySQL5版本的代码和我的有些不一样 在DatabaseUtil这:
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://127.0.0.1:3306/mysql01?useUnicode=true&"
+ "characterEncoding=UTF8&allowMultiQueries=true";
然后这个是这地方输入你自己mysql的密码
String username = "root";
String password = "a123456*";
溜了溜了 我验证了一波 我的是没有错的
嘿嘿嘿 开心!!!!!!!