今天使用IDEA,Junit使用Scanner控制台无法输入,我以为是代码的问题。于是把单元测试换成了main函数
1、使用单元测试
@Test
public void test()throws Exception{
//从键盘输入用户信息,添加到day04_test01_bookstore库的users表中
Scanner input = new Scanner(System.in);
System.out.print("请输入用户名:");
String username = input.next();
System.out.print("请输入密码:");
String password = input.next();
System.out.print("请输入邮箱:");
String email = input.next();
//1、注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2、获取连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test01_bookstore?useUnicode=true&characterEncoding=utf8", "root", "123456");
//3、编写sql
String sql = "insert into users values(null,?,password(?),?)";
//4、创建PreparedStatement
PreparedStatement pst = conn.prepareStatement(sql);//此时的sql带?的
//加入一步,设置?的值
pst.setString(1, username);//1表示第1个?
pst.setString(2, password);//2表示第2个?
pst.setString(3, email);//3表示第3个?
//5、执行sql
int len = pst.executeUpdate();
System.out.println(len>0?"添加成功":"添加失败");
//6、关闭
pst.close();
conn.close();
input.close();
}
2、使用main函数
package Connection4;
import org.junit.Test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;
/**
* @author shkstart
* @create 2021-08-24 13:35
*/
public class Test04 {
public static void main(String[] args) throws Exception {
Test04 test04 = new Test04();
test04.test();
}
public void test() throws Exception {
//从键盘输入用户信息,添加到day04_test01_bookstore库的users表中
Scanner input = new Scanner(System.in);
System.out.print("请输入用户名:");
String username = input.next();
System.out.print("请输入密码:");
String password = input.next();
System.out.print("请输入邮箱:");
String email = input.next();
//1、注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2、获取连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test01_bookstore?useUnicode=true&characterEncoding=utf8", "root", "123456");
//3、编写sql
String sql = "insert into users values(null,?,password(?),?)";
//4、创建PreparedStatement
PreparedStatement pst = conn.prepareStatement(sql);//此时的sql带?的
//加入一步,设置?的值
pst.setString(1, username);//1表示第1个?
pst.setString(2, password);//2表示第2个?
pst.setString(3, email);//3表示第3个?
//5、执行sql
int len = pst.executeUpdate();
System.out.println(len > 0 ? "添加成功" : "添加失败");
//6、关闭
pst.close();
conn.close();
input.close();
}
}
那到底单元测试能不能使用Scanner呢,答案是能的
解决方法:
1、 打开IDEA安装根目录下的bin文件夹,找到idea.exe.vmoptions和idea64.exe.vmoptions这两个文件
2、用记事本或者EditPlus 或者直接在idea中编辑这两个文件
添加-Deditable.java.test.console=true
注意:是两个文件都要添加
idea.exe.vmoptions文件
idea64.exe.vmoptions文件
然后就可以输入了。