用JDBC实现接收用户输入的sql语句对数据库进行操作,出现了一些问题,希望大神解答,感激不尽!

chaser401 2016-04-08 10:34:23
最近正在练习JDBC,想通过用户输入sql语句对数据库进行操作,现在数据库已连接成功,
这是GetConn.java代码:

package com.extend.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class GetConn {
static Connection getConn() {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/tjm_test";
String username = "root";
String password = "";
Connection conn = null;
try {
Class.forName(driver); //classLoader,加载对应驱动
conn = (Connection) DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}
这是Dao.java代码:
package com.extend.dao;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.mysql.jdbc.PreparedStatement;
import com.extend.bean.*;

public class Dao {
public static int insertUser(String str) {
Connection conn = GetConn.getConn();//调用类方法的方式
int i = 0;
String sql = str;
PreparedStatement pstmt;
try {
pstmt = (PreparedStatement) conn.prepareStatement(sql);
i = pstmt.executeUpdate();
pstmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return i;
}

public static int deleteUser(String str) {
Connection conn = GetConn.getConn();//调用类方法的方式
int i = 0;
String sql = str;
PreparedStatement pstmt;
try {
pstmt = (PreparedStatement) conn.prepareStatement(sql);
i = pstmt.executeUpdate();
pstmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return i;
}

public static int updateUser(String str) {
Connection conn = GetConn.getConn();//调用类方法的方式
int i = 0;
String sql = str;
PreparedStatement pstmt;
try {
pstmt = (PreparedStatement) conn.prepareStatement(sql);
i = pstmt.executeUpdate();
pstmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return i;
}

public static int selectUser(User user) {
Connection conn = GetConn.getConn();//调用类方法的方式
int i = 0;
String sql = "select * from user where username=?";
PreparedStatement pstmt;
try {
pstmt = (PreparedStatement) conn.prepareStatement(sql);
pstmt.setString(1, user.getUser());
//i = pstmt.executeUpdate();查找不涉及修改操作,所以没有这句话
ResultSet rs = (ResultSet) pstmt.executeQuery();
while(rs.next())

{
user.setUser(rs.getString("username"));

user.setPwd(rs.getString("password")); //获取数据库中的密码

user.setNickName(rs.getString("nickname")); //获取数据库中的昵称

user.setAuthorith(rs.getString("authorith")); //获取数据库中的权限

}
pstmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return i;
}

/*测试主方法
public static void main(String[] args) throws Exception {
System.out.println("abc");
User user1 = new User();//创建对象user
user1.setUser("test_user");//调用User类的方法
user1.setPwd("test_pwd");
user1.setNickName("test_nickname");
user1.setAuthorith("test_auth");

User user2 = new User();
user2.setUser("1@1.com");//调用User类的方法
//user2.setPwd("test111");
user2.setNickName("test_nickname");
//user2.setAuthorith("test_auth");

User user3 = new User();
user3.setUser("1@2.com");

User user4 = new User();
user4.setUser("1@3.com");
Dao dao = new Dao();//创建对象dao
dao.insertUser(user1);//dao是以对象为变量的,调用Dao的方法addUser
dao.updateUser(user2);
dao.deleteUser(user3);
dao.selectUser(user4);
System.out.println("用户名:"+user4.getUser() +"密码:"+user4.getPwd()+"昵称:"+user4.getNickName()+"权限:"+user4.getAuthorith());
}
*/
}
这是接收用户输入并执行的类:
package com.extend.test;

import java.util.Scanner;
import com.extend.dao.Dao;
import com.extend.bean.User;

//import com.extend.utils.Utils;

public class Ch7 extends Parent {
public static void main(String args[]) {
System.out
.println("您已进入ch7的操作,请输入数字1插入数据 or 数字2删除数据 or 数字3修改数据or 数字4查找数据or over:退出");
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String line1 = sc.next();
if (line1.equals("1")) {
add(sc);
} else if (line1.equals("2")) {
remove(sc);
} else if (line1.equals("3")) {
modify(sc);
} else if (line1.equals("4")) {
check(sc);
} else if ("over".equals(line1)) {
break;
}
else {
System.out.println("请输入正确的操作");
}
System.out
.println("您已进入ch7的操作,请输入数字1插入数据 or 数字2删除数据 or 数字3修改数据or 数字4查找数据or over:退出");
}
}
/**
* 插入数据的操作
*
* @param sc
*/
private void add(Scanner sc) {
System.out.println("请输入需要插入的数据的sql语句,输入ok退回上一级");
while (sc.hasNext()) {
String line2 = sc.nextLine();//用这个方法可以读取一行包括空格的字符串
try {
if (!"ok".equals(line2)) {
Dao.insertUser(line2);
System.out.println(line2);// 打印字符串
} else if ("ok".equals(line2)) {
break;
}
} catch (Exception e) {
// e.printStackTrace();
System.out.println("您输入的格式不正确");
}
}
}
/**
* 删除数据的操作
*/
private void remove(Scanner sc) {
System.out.println("请输入需要删除的数据的sql语句,输入ok退回上一级");
while (sc.hasNext()) {
String line3 = sc.nextLine();
try {
if (!"ok".equals(line3)) {
Dao.deleteUser(line3);
System.out.println(line3);// 打印字符串
} else if ("ok".equals(line3)) {
break;
}
} catch (Exception e) {
// e.printStackTrace();
System.out.println("您输入的格式不正确");
}
}
}
/**
* 修改数据的操作
*/
private void modify(Scanner sc) {
System.out.println("请输入需要修改的数据的sql语句,输入ok退回上一级");
while (sc.hasNext()) {
String line4 = sc.nextLine();
try {
if (!"ok".equals(line4)) {
Dao.updateUser(line4);
System.out.println(line4);// 打印字符串
} else if ("ok".equals(line4)) {
break;
}
} catch (Exception e) {
// e.printStackTrace();
System.out.println("您输入的格式不正确");
}
}
}
/**
* 查找数据的操作
*/
private void check(Scanner sc) {
System.out.println("请输入需要查找的用户名称,输入ok退回上一级");
while (sc.hasNext()) {
String line5 = sc.nextLine();
try {
if (!"ok".equals(line5)) {
User user = new User();
user.setUser(line5);
Dao.selectUser(user);
System.out.println(line5);// 打印字符串
System.out.println("用户名:" + user.getUser() + "密码:"
+ user.getPwd() + "昵称:" + user.getNickName()
+ "权限:" + user.getAuthorith());
} else if ("ok".equals(line5)) {
break;
}
} catch (Exception e) {
// e.printStackTrace();
System.out.println("您输入的格式不正确");
}
}
}
}
只有查找功能实现了,因为没有用到给sql赋值的操作,其他功能报错:

求大神解答,感激不尽!

...全文
602 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
chaser401 2016-04-12
  • 打赏
  • 举报
回复
引用 20 楼 qnmdcsdn 的回复:
public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String str = null;
		while (!"exit".equals(str)) {
			str = sc.nextLine();
			System.out.println(str);
		}
	}
试了一下不会输出空值啊,查一下你的程序吧
用这个不会输出空值,但是我那个程序会执行空值,还是谢谢你,把分给你了
chaser401 2016-04-08
  • 打赏
  • 举报
回复
引用 12 楼 ch1240249252 的回复:
要不 LZ你就发发善心 告诉我们 57行 是什么???我们帮忙看看
他这个只是自带的一个类库的代码啊,根本看不懂,而且他说57行不是一个valid的行数,这是代码: // Compiled from NativeConstructorAccessorImpl.java (version 1.7 : 51.0, super bit) class sun.reflect.NativeConstructorAccessorImpl extends sun.reflect.ConstructorAccessorImpl { // Field descriptor #42 Ljava/lang/reflect/Constructor; private java.lang.reflect.Constructor c; // Field descriptor #43 Lsun/reflect/DelegatingConstructorAccessorImpl; private sun.reflect.DelegatingConstructorAccessorImpl parent; // Field descriptor #7 I private int numInvocations; // Method descriptor #46 (Ljava/lang/reflect/Constructor;)V // Stack: 2, Locals: 2 NativeConstructorAccessorImpl(java.lang.reflect.Constructor arg0); 0 aload_0 [this] 1 invokespecial sun.reflect.ConstructorAccessorImpl() [70] 4 aload_0 [this] 5 aload_1 [arg0] 6 putfield sun.reflect.NativeConstructorAccessorImpl.c : java.lang.reflect.Constructor [64] 9 return Line numbers: [pc: 0, line: 38] [pc: 4, line: 39] [pc: 9, line: 40] // Method descriptor #3 ([Ljava/lang/Object;)Ljava/lang/Object; // Stack: 5, Locals: 3 public java.lang.Object newInstance(java.lang.Object[] arg0) throws java.lang.InstantiationException, java.lang.IllegalArgumentException, java.lang.reflect.InvocationTargetException; 0 aload_0 [this] 1 dup 2 getfield sun.reflect.NativeConstructorAccessorImpl.numInvocations : int [63] 5 iconst_1 6 iadd 7 dup_x1 8 putfield sun.reflect.NativeConstructorAccessorImpl.numInvocations : int [63] 11 invokestatic sun.reflect.ReflectionFactory.inflationThreshold() : int [75] 14 if_icmple 67 17 new sun.reflect.MethodAccessorGenerator [39] 20 dup 21 invokespecial sun.reflect.MethodAccessorGenerator() [72] 24 aload_0 [this] 25 getfield sun.reflect.NativeConstructorAccessorImpl.c : java.lang.reflect.Constructor [64] 28 invokevirtual java.lang.reflect.Constructor.getDeclaringClass() : java.lang.Class [67] 31 aload_0 [this] 32 getfield sun.reflect.NativeConstructorAccessorImpl.c : java.lang.reflect.Constructor [64] 35 invokevirtual java.lang.reflect.Constructor.getParameterTypes() : java.lang.Class[] [69] 38 aload_0 [this] 39 getfield sun.reflect.NativeConstructorAccessorImpl.c : java.lang.reflect.Constructor [64] 42 invokevirtual java.lang.reflect.Constructor.getExceptionTypes() : java.lang.Class[] [68] 45 aload_0 [this] 46 getfield sun.reflect.NativeConstructorAccessorImpl.c : java.lang.reflect.Constructor [64] 49 invokevirtual java.lang.reflect.Constructor.getModifiers() : int [66] 52 invokevirtual sun.reflect.MethodAccessorGenerator.generateConstructor(java.lang.Class, java.lang.Class[], java.lang.Class[], int) : sun.reflect.ConstructorAccessor [73] 55 checkcast sun.reflect.ConstructorAccessorImpl [37] 58 astore_2 59 aload_0 [this] 60 getfield sun.reflect.NativeConstructorAccessorImpl.parent : sun.reflect.DelegatingConstructorAccessorImpl [65] 63 aload_2 64 invokevirtual sun.reflect.DelegatingConstructorAccessorImpl.setDelegate(sun.reflect.ConstructorAccessorImpl) : void [71] 67 aload_0 [this] 68 getfield sun.reflect.NativeConstructorAccessorImpl.c : java.lang.reflect.Constructor [64] 71 aload_1 [arg0] 72 invokestatic sun.reflect.NativeConstructorAccessorImpl.newInstance0(java.lang.reflect.Constructor, java.lang.Object[]) : java.lang.Object [74] 75 areturn Line numbers: [pc: 0, line: 47] [pc: 17, line: 48] [pc: 59, line: 54] [pc: 67, line: 57] Stack map table: number of frames 1 [pc: 67, same_extended] // Method descriptor #48 (Lsun/reflect/DelegatingConstructorAccessorImpl;)V // Stack: 2, Locals: 2 void setParent(sun.reflect.DelegatingConstructorAccessorImpl arg0); 0 aload_0 [this] 1 aload_1 [arg0] 2 putfield sun.reflect.NativeConstructorAccessorImpl.parent : sun.reflect.DelegatingConstructorAccessorImpl [65] 5 return Line numbers: [pc: 0, line: 61] [pc: 5, line: 62] // Method descriptor #49 (Ljava/lang/reflect/Constructor;[Ljava/lang/Object;)Ljava/lang/Object; private static native java.lang.Object newInstance0(java.lang.reflect.Constructor arg0, java.lang.Object[] arg1) throws java.lang.InstantiationException, java.lang.IllegalArgumentException, java.lang.reflect.InvocationTargetException; }
风小曦 2016-04-08
  • 打赏
  • 举报
回复
引用 9 楼 chaser401 的回复:
[quote=引用 8 楼 qnmdcsdn 的回复:] [quote=引用 6 楼 chaser401 的回复:] [quote=引用 5 楼 qnmdcsdn 的回复:] 少年,你把你那句sql放到sqlserver中看看能运行不
试了一下,在控制台输入就可以运行了,但是还是会报错啊 错误: [/quote] 在控制台输入就可以运行了,是什么意思?[/quote] 就是在控制台输入insert into user (username, password, nickname, authorith) values(‘1’,‘1’,‘1’,‘1’)可以把这条数据插入到数据库,输入delete from user where username='3@3.com'可以删除这条数据,但是还是会报异常,不知道为啥[/quote] 直接debug进去看看,这样比较好找错误。要习惯debug找错才行
奄灬苟且偷生 2016-04-08
  • 打赏
  • 举报
回复
要不 LZ你就发发善心 告诉我们 57行 是什么???我们帮忙看看
chaser401 2016-04-08
  • 打赏
  • 举报
回复
引用 8 楼 qnmdcsdn 的回复:
[quote=引用 6 楼 chaser401 的回复:] [quote=引用 5 楼 qnmdcsdn 的回复:] 少年,你把你那句sql放到sqlserver中看看能运行不
试了一下,在控制台输入就可以运行了,但是还是会报错啊 错误: [/quote] 在控制台输入就可以运行了,是什么意思?[/quote] 就是在控制台输入insert into user (username, password, nickname, authorith) values(‘1’,‘1’,‘1’,‘1’)可以把这条数据插入到数据库,输入delete from user where username='3@3.com'可以删除这条数据,但是还是会报异常,不知道为啥
  • 打赏
  • 举报
回复
引用 1 楼 ch1240249252 的回复:
LZ等你 学会了贴代码再来问怎么改吧 你现在这样问,我只能告诉你,你的错误是: 无效的SQL语句,可能语句为空 错误就在NativeConstructorAccessorImpl.java 的第57行 和 DelegatingConstructorAccessorImpl.java的第45行 具体是什么 还是你自己看看吧
看一下57行是什么鬼,为毛插入删除的时候错误都报到那里
chaser401 2016-04-08
  • 打赏
  • 举报
回复
引用 7 楼 u013100188 的回复:
插入方法没问题,那就先排除其他问题。先别用控制台输入掉方法。写个man传参直接调用方法,顺便打印插入语句并在数据库试试。
就是在控制台输入insert into user (username, password, nickname, authorith) values(‘1’,‘1’,‘1’,‘1’)可以把这条数据插入到数据库,输入delete from user where username='3@3.com'可以删除这条数据,但是还是会报异常,不知道为啥
风小曦 2016-04-08
  • 打赏
  • 举报
回复
插入方法没问题,那就先排除其他问题。先别用控制台输入掉方法。写个man传参直接调用方法,顺便打印插入语句并在数据库试试。
  • 打赏
  • 举报
回复
引用 6 楼 chaser401 的回复:
[quote=引用 5 楼 qnmdcsdn 的回复:] 少年,你把你那句sql放到sqlserver中看看能运行不
试了一下,在控制台输入就可以运行了,但是还是会报错啊 错误: [/quote] 在控制台输入就可以运行了,是什么意思?
chaser401 2016-04-08
  • 打赏
  • 举报
回复
引用 5 楼 qnmdcsdn 的回复:
少年,你把你那句sql放到sqlserver中看看能运行不


试了一下,在控制台输入就可以运行了,但是还是会报错啊

错误:
  • 打赏
  • 举报
回复
少年,你把你那句sql放到sqlserver中看看能运行不
chaser401 2016-04-08
  • 打赏
  • 举报
回复
引用 2 楼 ch1240249252 的回复:
不会是 values 后面没空格导致的吧
试了一下不是这个问题:我在上面重申了一下问题,大神看一下
chaser401 2016-04-08
  • 打赏
  • 举报
回复
我把主要问题发一下吧,插入数据库的方法:将str字符串赋值给sql语句用来插入数据 public static int insertUser(String str) { Connection conn = GetConn.getConn(); int i = 0; String sql = str; PreparedStatement pstmt; try { pstmt = (PreparedStatement) conn.prepareStatement(sql); i = pstmt.executeUpdate(); pstmt.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } return i; } 在控制台,调用这个方法将line2赋值给sql语句来插入数据,为啥会报错呢 private void add(Scanner sc) { System.out.println("请输入需要插入的数据的sql语句,输入ok退回上一级"); while (sc.hasNext()) { String line2 = sc.nextLine();//用这个方法可以读取一行包括空格的字符串 try { if (!"ok".equals(line2)) { Dao.insertUser(line2); System.out.println(line2);// 打印字符串 } else if ("ok".equals(line2)) { break; } } catch (Exception e) { // e.printStackTrace(); System.out.println("您输入的格式不正确"); } } }
奄灬苟且偷生 2016-04-08
  • 打赏
  • 举报
回复
不会是 values 后面没空格导致的吧
奄灬苟且偷生 2016-04-08
  • 打赏
  • 举报
回复
LZ等你 学会了贴代码再来问怎么改吧 你现在这样问,我只能告诉你,你的错误是: 无效的SQL语句,可能语句为空 错误就在NativeConstructorAccessorImpl.java 的第57行 和 DelegatingConstructorAccessorImpl.java的第45行 具体是什么 还是你自己看看吧
  • 打赏
  • 举报
回复
public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String str = null;
		while (!"exit".equals(str)) {
			str = sc.nextLine();
			System.out.println(str);
		}
	}
试了一下不会输出空值啊,查一下你的程序吧
chaser401 2016-04-08
  • 打赏
  • 举报
回复
引用 18 楼 qnmdcsdn 的回复:
[quote=引用 17 楼 chaser401 的回复:] [quote=引用 15 楼 qnmdcsdn 的回复:] 我去,直接看utils的411行吧,上边sun的包跟进去也没用
debug了一下,稍微明白一点问题出在哪了,就是每次我在控制台输入时,String line2 = sc.nextLine();都会获取一条空值然后执行数据库操作,所以会出现异常,解决方法在前面加个如下的判断就好了,但是还是不知道原因 if ("".equals(line2) || null == line2) { System.out.println("您已进入插入操作"); } [/quote] 你搞一条空值进去执行当然会报错,怪不得query 老是empty[/quote] 我没有输入空值,是我输入插入语句后他自动执行了一条空值
  • 打赏
  • 举报
回复
引用 17 楼 chaser401 的回复:
[quote=引用 15 楼 qnmdcsdn 的回复:] 我去,直接看utils的411行吧,上边sun的包跟进去也没用
debug了一下,稍微明白一点问题出在哪了,就是每次我在控制台输入时,String line2 = sc.nextLine();都会获取一条空值然后执行数据库操作,所以会出现异常,解决方法在前面加个如下的判断就好了,但是还是不知道原因 if ("".equals(line2) || null == line2) { System.out.println("您已进入插入操作"); } [/quote] 你搞一条空值进去执行当然会报错,怪不得query 老是empty
奄灬苟且偷生 2016-04-08
  • 打赏
  • 举报
回复
引用 14 楼 chaser401 的回复:
[quote=引用 12 楼 ch1240249252 的回复:] 要不 LZ你就发发善心 告诉我们 57行 是什么???我们帮忙看看
他这个只是自带的一个类库的代码啊,根本看不懂,而且他说57行不是一个valid的行数,这是代码: // Compiled from NativeConstructorAccessorImpl.java (version 1.7 : 51.0, super bit) class sun.reflect.NativeConstructorAccessorImpl extends sun.reflect.ConstructorAccessorImpl { // Field descriptor #42 Ljava/lang/reflect/Constructor; private java.lang.reflect.Constructor c; // Field descriptor #43 Lsun/reflect/DelegatingConstructorAccessorImpl; private sun.reflect.DelegatingConstructorAccessorImpl parent; // Field descriptor #7 I private int numInvocations; // Method descriptor #46 (Ljava/lang/reflect/Constructor;)V // Stack: 2, Locals: 2 NativeConstructorAccessorImpl(java.lang.reflect.Constructor arg0); 0 aload_0 [this] 1 invokespecial sun.reflect.ConstructorAccessorImpl() [70] 4 aload_0 [this] 5 aload_1 [arg0] 6 putfield sun.reflect.NativeConstructorAccessorImpl.c : java.lang.reflect.Constructor [64] 9 return Line numbers: [pc: 0, line: 38] [pc: 4, line: 39] [pc: 9, line: 40] // Method descriptor #3 ([Ljava/lang/Object;)Ljava/lang/Object; // Stack: 5, Locals: 3 public java.lang.Object newInstance(java.lang.Object[] arg0) throws java.lang.InstantiationException, java.lang.IllegalArgumentException, java.lang.reflect.InvocationTargetException; 0 aload_0 [this] 1 dup 2 getfield sun.reflect.NativeConstructorAccessorImpl.numInvocations : int [63] 5 iconst_1 6 iadd 7 dup_x1 8 putfield sun.reflect.NativeConstructorAccessorImpl.numInvocations : int [63] 11 invokestatic sun.reflect.ReflectionFactory.inflationThreshold() : int [75] 14 if_icmple 67 17 new sun.reflect.MethodAccessorGenerator [39] 20 dup 21 invokespecial sun.reflect.MethodAccessorGenerator() [72] 24 aload_0 [this] 25 getfield sun.reflect.NativeConstructorAccessorImpl.c : java.lang.reflect.Constructor [64] 28 invokevirtual java.lang.reflect.Constructor.getDeclaringClass() : java.lang.Class [67] 31 aload_0 [this] 32 getfield sun.reflect.NativeConstructorAccessorImpl.c : java.lang.reflect.Constructor [64] 35 invokevirtual java.lang.reflect.Constructor.getParameterTypes() : java.lang.Class[] [69] 38 aload_0 [this] 39 getfield sun.reflect.NativeConstructorAccessorImpl.c : java.lang.reflect.Constructor [64] 42 invokevirtual java.lang.reflect.Constructor.getExceptionTypes() : java.lang.Class[] [68] 45 aload_0 [this] 46 getfield sun.reflect.NativeConstructorAccessorImpl.c : java.lang.reflect.Constructor [64] 49 invokevirtual java.lang.reflect.Constructor.getModifiers() : int [66] 52 invokevirtual sun.reflect.MethodAccessorGenerator.generateConstructor(java.lang.Class, java.lang.Class[], java.lang.Class[], int) : sun.reflect.ConstructorAccessor [73] 55 checkcast sun.reflect.ConstructorAccessorImpl [37] 58 astore_2 59 aload_0 [this] 60 getfield sun.reflect.NativeConstructorAccessorImpl.parent : sun.reflect.DelegatingConstructorAccessorImpl [65] 63 aload_2 64 invokevirtual sun.reflect.DelegatingConstructorAccessorImpl.setDelegate(sun.reflect.ConstructorAccessorImpl) : void [71] 67 aload_0 [this] 68 getfield sun.reflect.NativeConstructorAccessorImpl.c : java.lang.reflect.Constructor [64] 71 aload_1 [arg0] 72 invokestatic sun.reflect.NativeConstructorAccessorImpl.newInstance0(java.lang.reflect.Constructor, java.lang.Object[]) : java.lang.Object [74] 75 areturn Line numbers: [pc: 0, line: 47] [pc: 17, line: 48] [pc: 59, line: 54] [pc: 67, line: 57] Stack map table: number of frames 1 [pc: 67, same_extended] // Method descriptor #48 (Lsun/reflect/DelegatingConstructorAccessorImpl;)V // Stack: 2, Locals: 2 void setParent(sun.reflect.DelegatingConstructorAccessorImpl arg0); 0 aload_0 [this] 1 aload_1 [arg0] 2 putfield sun.reflect.NativeConstructorAccessorImpl.parent : sun.reflect.DelegatingConstructorAccessorImpl [65] 5 return Line numbers: [pc: 0, line: 61] [pc: 5, line: 62] // Method descriptor #49 (Ljava/lang/reflect/Constructor;[Ljava/lang/Object;)Ljava/lang/Object; private static native java.lang.Object newInstance0(java.lang.reflect.Constructor arg0, java.lang.Object[] arg1) throws java.lang.InstantiationException, java.lang.IllegalArgumentException, java.lang.reflect.InvocationTargetException; }[/quote]你要是这样我也帮不了忙,看不到行数,你找版主问问吧,他们懂的多
chaser401 2016-04-08
  • 打赏
  • 举报
回复
引用 15 楼 qnmdcsdn 的回复:
我去,直接看utils的411行吧,上边sun的包跟进去也没用
debug了一下,稍微明白一点问题出在哪了,就是每次我在控制台输入时,String line2 = sc.nextLine();都会获取一条空值然后执行数据库操作,所以会出现异常,解决方法在前面加个如下的判断就好了,但是还是不知道原因 if ("".equals(line2) || null == line2) { System.out.println("您已进入插入操作"); }
加载更多回复(1)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧