java.util.NoSuchElementException at java.util.Scanner.next
/*使用Java语言编程实现对学生-课程数据库的访问,使用者可以进行创建、插入、查询、删除和更新等操作。*/importjava.util.Scanner;importj...
/*使用Java语言编程实现对学生-课程数据库的访问,使用者可以进行创建、插入、查询、删除和更新等操作。*/
import java.util.Scanner;
import java.sql.*;
public static void select(String table,Connection con) throws Exception //查询语句,输入参数为表、当前连接以及预编译语句的对象
{
//select函数单独运行没有问题
}
public static void insert(String table,Connection con)throws Exception//插入语句,使用占位符?来实现
{
select(table,con);
String s0="select * from "+table;
PreparedStatement prepStmt=con.prepareStatement(s0);
ResultSet rs=prepStmt.executeQuery();
int col=rs.getMetaData().getColumnCount();//获取表的字段个数
int cc=col;
String s1="insert into "+table+" values(?";
while(cc-->1)s1=s1+",?";
s1=s1+");";
prepStmt = con.prepareStatement(s1);
Scanner scan=new Scanner(System.in);
System.out.println("按顺序输入"+col+"个数据:");
for(cc=1;cc<=col;cc++)prepStmt.setString(cc,scan.next());
prepStmt.executeUpdate();
System.out.println("插入成功!");
System.out.println("————————————————————————————————————————");
select(table,con);
scan.close();
prepStmt.close();
}
public static void main(String args[])
{
try
{
boolean flag=true;
while(flag)
{
System.out.println("4.往表中插入一条数据");
String table,name,type,zd;
Scanner scan = new Scanner(System.in);//第二次运行到这儿就报错
String n = scan.next();
switch(n)
{
case("4"):
System.out.println("输入要插入数据的表:");
table=scan.next();
insert(table,con);
break;
}
因为字数限制被我删去了很多,将就看一下重点问题部分:
首先,我要说明,程序本身运行没问题,在我加上最后一部分while(flag)之后就出现问题了,报错为题目上面的
然后程序实现的功能中,插删改几个(只要有select)函数的都报错;报错还很奇怪的,while第一次循环可以运行,第二次运行至上面标记那里就报错,为啥呢。。 展开
import java.util.Scanner;
import java.sql.*;
public static void select(String table,Connection con) throws Exception //查询语句,输入参数为表、当前连接以及预编译语句的对象
{
//select函数单独运行没有问题
}
public static void insert(String table,Connection con)throws Exception//插入语句,使用占位符?来实现
{
select(table,con);
String s0="select * from "+table;
PreparedStatement prepStmt=con.prepareStatement(s0);
ResultSet rs=prepStmt.executeQuery();
int col=rs.getMetaData().getColumnCount();//获取表的字段个数
int cc=col;
String s1="insert into "+table+" values(?";
while(cc-->1)s1=s1+",?";
s1=s1+");";
prepStmt = con.prepareStatement(s1);
Scanner scan=new Scanner(System.in);
System.out.println("按顺序输入"+col+"个数据:");
for(cc=1;cc<=col;cc++)prepStmt.setString(cc,scan.next());
prepStmt.executeUpdate();
System.out.println("插入成功!");
System.out.println("————————————————————————————————————————");
select(table,con);
scan.close();
prepStmt.close();
}
public static void main(String args[])
{
try
{
boolean flag=true;
while(flag)
{
System.out.println("4.往表中插入一条数据");
String table,name,type,zd;
Scanner scan = new Scanner(System.in);//第二次运行到这儿就报错
String n = scan.next();
switch(n)
{
case("4"):
System.out.println("输入要插入数据的表:");
table=scan.next();
insert(table,con);
break;
}
因为字数限制被我删去了很多,将就看一下重点问题部分:
首先,我要说明,程序本身运行没问题,在我加上最后一部分while(flag)之后就出现问题了,报错为题目上面的
然后程序实现的功能中,插删改几个(只要有select)函数的都报错;报错还很奇怪的,while第一次循环可以运行,第二次运行至上面标记那里就报错,为啥呢。。 展开
2个回答
2014-12-04
展开全部
首先switch(n)这里的switch()这里必须传int类型的数字吧,我执行了一下你的代码,除了while循环没有结束以外,要把switch(n)这里的n的类型转成int之后,感觉没有你所说的错误。
追问
整一段代码贴不上来。。switch那里好像没有问题,我也试过int的类型之后,那个问题没有解决。。
追答
我也刚刚找到问题。
insert(table,con,scan);我改成的是把Scanner scan当成参数传入insert方法,然后把insert方法里面关于Scanner scan都删除就0k了。(*^__^*) 嘻嘻……
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询