小弟分别在两个类中写了两个方法,一个是用来往数据库中添加数据的方法getOracleData(),另一个负责从控制台接收数据的方法getData()。但是如何才能将getData()获得的数据返回给getOracleData()中呢?请各位大大帮帮忙解答!谢谢!这个是getOracleData()方法
// 抽出添加数据的方法
public static void getOracleAddData() throws Exception{
String[] st = new String[6];
Connection conn = JDBC_Connections.getOracleConnection();
String sql = "{call PRO_STU_ADD(?,?,?,?,?,?)}";
CallableStatement cstmt = conn.prepareCall(sql);
cstmt.clearBatch();
try{ //将学号数据转整形
int i = Integer.parseInt(st[0]);
//将分数数据转浮点型
float f1 = Float.parseFloat(st[2]);
float f2 = Float.parseFloat(st[3]);
float f3 = Float.parseFloat(st[4]);
float f4 = (f1+f2+f3)/3;
cstmt.setInt(1,i);
cstmt.setString(2,st[1]);
cstmt.setFloat(3,f1);
cstmt.setFloat(4,f2);
cstmt.setFloat(5,f3);
cstmt.setFloat(6,f4);
//提交数据缓冲
cstmt.addBatch();
//提交数据
conn.commit();
System.out.println("数据插入成功!");
}catch(Exception ex){
ex.printStackTrace();
} }这个是getData()方法:
public void getData() throws Exception{
try{
Scanner sc = new Scanner(System.in);
System.out.println("请输入学号:");
st[0] = sc.nextLine();
System.out.println("请输入姓名:");
st[1] = sc.nextLine();
System.out.println("请输入语文分数:");
st[2] = sc.nextLine();
System.out.println("请输入数学分数:");
st[3] = sc.nextLine();
System.out.println("请输入英语分数:");
st[4] = sc.nextLine();
DB_Operations.getOracleAddData();
}catch(Exception ex){
ex.printStackTrace();
}
}
// 抽出添加数据的方法
public static void getOracleAddData() throws Exception{
String[] st = new String[6];
Connection conn = JDBC_Connections.getOracleConnection();
String sql = "{call PRO_STU_ADD(?,?,?,?,?,?)}";
CallableStatement cstmt = conn.prepareCall(sql);
cstmt.clearBatch();
try{ //将学号数据转整形
int i = Integer.parseInt(st[0]);
//将分数数据转浮点型
float f1 = Float.parseFloat(st[2]);
float f2 = Float.parseFloat(st[3]);
float f3 = Float.parseFloat(st[4]);
float f4 = (f1+f2+f3)/3;
cstmt.setInt(1,i);
cstmt.setString(2,st[1]);
cstmt.setFloat(3,f1);
cstmt.setFloat(4,f2);
cstmt.setFloat(5,f3);
cstmt.setFloat(6,f4);
//提交数据缓冲
cstmt.addBatch();
//提交数据
conn.commit();
System.out.println("数据插入成功!");
}catch(Exception ex){
ex.printStackTrace();
} }这个是getData()方法:
public void getData() throws Exception{
try{
Scanner sc = new Scanner(System.in);
System.out.println("请输入学号:");
st[0] = sc.nextLine();
System.out.println("请输入姓名:");
st[1] = sc.nextLine();
System.out.println("请输入语文分数:");
st[2] = sc.nextLine();
System.out.println("请输入数学分数:");
st[3] = sc.nextLine();
System.out.println("请输入英语分数:");
st[4] = sc.nextLine();
DB_Operations.getOracleAddData();
}catch(Exception ex){
ex.printStackTrace();
}
}
try{
Scanner sc = new Scanner(System.in);
System.out.println("请输入学号:");
st[0] = sc.nextLine();
System.out.println("请输入姓名:");
st[1] = sc.nextLine();
System.out.println("请输入语文分数:");
st[2] = sc.nextLine();
System.out.println("请输入数学分数:");
st[3] = sc.nextLine();
System.out.println("请输入英语分数:");
st[4] = sc.nextLine();
DB_Operations.getOracleAddData();
}catch(Exception ex){
ex.printStackTrace();
}
}
你的st从哪来的??
//Type 就是你st的类型
public Type getData() throws Exception{
//在这里加上你st的定义
try{
Scanner sc = new Scanner(System.in);
System.out.println("请输入学号:");
st[0] = sc.nextLine();
System.out.println("请输入姓名:");
st[1] = sc.nextLine();
System.out.println("请输入语文分数:");
st[2] = sc.nextLine();
System.out.println("请输入数学分数:");
st[3] = sc.nextLine();
System.out.println("请输入英语分数:");
st[4] = sc.nextLine();
DB_Operations.getOracleAddData();
}catch(Exception ex){
ex.printStackTrace();
}
return st;
}
"st"是字符串数组,在getOracleAddData()方法体里已经有定义的,但是如果写成public String getData() throws Exception{}这种方式的话就会报错。如果写成String[]返回类型也会报错。究竟应该如何处理呢?
前辈能不能说得再具体些?我初学JAVA,有很多地方还不懂?
报错是因为你没有return 一个值啊
String[] st = new String[6]; public static void main(String[] args){
getData();
getOracleAddData();
}
// 抽出添加数据的方法
public static void getOracleAddData(){
Connection conn = JDBC_Connections.getOracleConnection();
String sql = "{call PRO_STU_ADD(?,?,?,?,?,?)}";
CallableStatement cstmt = conn.prepareCall(sql);
cstmt.clearBatch();
try{ //将学号数据转整形
int i = Integer.parseInt(st[0]);
//将分数数据转浮点型
float f1 = Float.parseFloat(st[2]);
float f2 = Float.parseFloat(st[3]);
float f3 = Float.parseFloat(st[4]);
float f4 = (f1+f2+f3)/3;
cstmt.setInt(1,i);
cstmt.setString(2,st[1]);
cstmt.setFloat(3,f1);
cstmt.setFloat(4,f2);
cstmt.setFloat(5,f3);
cstmt.setFloat(6,f4);
//提交数据缓冲
cstmt.addBatch();
//提交数据
conn.commit();
System.out.println("数据插入成功!");
}catch(Exception ex){
ex.printStackTrace();
} } public static void getData(){
try{
Scanner sc = new Scanner(System.in);
System.out.println("请输入学号:");
st[0] = sc.nextLine();
System.out.println("请输入姓名:");
st[1] = sc.nextLine();
System.out.println("请输入语文分数:");
st[2] = sc.nextLine();
System.out.println("请输入数学分数:");
st[3] = sc.nextLine();
System.out.println("请输入英语分数:");
st[4] = sc.nextLine();
DB_Operations.getOracleAddData();
}catch(Exception ex){
ex.printStackTrace();
}
}
getOracleAddData();
}
// 抽出添加数据的方法
public static void getOracleAddData(){ String[] st = getData();
Connection conn = JDBC_Connections.getOracleConnection();
String sql = "{call PRO_STU_ADD(?,?,?,?,?,?)}";
CallableStatement cstmt = conn.prepareCall(sql);
cstmt.clearBatch();
try{ //将学号数据转整形
int i = Integer.parseInt(st[0]);
//将分数数据转浮点型
float f1 = Float.parseFloat(st[2]);
float f2 = Float.parseFloat(st[3]);
float f3 = Float.parseFloat(st[4]);
float f4 = (f1+f2+f3)/3;
cstmt.setInt(1,i);
cstmt.setString(2,st[1]);
cstmt.setFloat(3,f1);
cstmt.setFloat(4,f2);
cstmt.setFloat(5,f3);
cstmt.setFloat(6,f4);
//提交数据缓冲
cstmt.addBatch();
//提交数据
conn.commit();
System.out.println("数据插入成功!");
}catch(Exception ex){
ex.printStackTrace();
} } public static String[] getData(){
String[] st = new String[6];
try{
Scanner sc = new Scanner(System.in);
System.out.println("请输入学号:");
st[0] = sc.nextLine();
System.out.println("请输入姓名:");
st[1] = sc.nextLine();
System.out.println("请输入语文分数:");
st[2] = sc.nextLine();
System.out.println("请输入数学分数:");
st[3] = sc.nextLine();
System.out.println("请输入英语分数:");
st[4] = sc.nextLine();
DB_Operations.getOracleAddData();
}catch(Exception ex){
ex.printStackTrace();
}
return st;
}
(1)再写一个类调用 getData()得到 String[] 返回值,再调用 getOracleAddData() ,getOracleAddData() 必须要加一个参数。
(2)楼主 getData()中调用 getOracleAddData()了,getOracleAddData()中也必须要参数。两个方法都是需要 getOracleAddData() 加个参数,这样问题就解决了。如果 getData()中的数据只用于 getOracleAddData(),那么就用第二种方法,要注意看 st 这个参数的定义,这是作为参数传入的,要和 getOracleAddData() 中原来的参数类型一致。getOracleAddData 方法:// 抽出添加数据的方法
public static void getOracleAddData(String[] st) throws Exception{
Connection conn = JDBC_Connections.getOracleConnection();
String sql = "{call PRO_STU_ADD(?,?,?,?,?,?)}";
CallableStatement cstmt = conn.prepareCall(sql);
cstmt.clearBatch();
try{ //将学号数据转整形
int i = Integer.parseInt(st[0]);
//将分数数据转浮点型
float f1 = Float.parseFloat(st[2]);
float f2 = Float.parseFloat(st[3]);
float f3 = Float.parseFloat(st[4]);
float f4 = (f1+f2+f3)/3;
cstmt.setInt(1,i);
cstmt.setString(2,st[1]);
cstmt.setFloat(3,f1);
cstmt.setFloat(4,f2);
cstmt.setFloat(5,f3);
cstmt.setFloat(6,f4);
//提交数据缓冲
cstmt.addBatch();
//提交数据
conn.commit();
System.out.println("数据插入成功!");
}catch(Exception ex){
ex.printStackTrace();
} }getData 方法: public void getData() throws Exception{
try{
Scanner sc = new Scanner(System.in);
System.out.println("请输入学号:");
st[0] = sc.nextLine();
System.out.println("请输入姓名:");
st[1] = sc.nextLine();
System.out.println("请输入语文分数:");
st[2] = sc.nextLine();
System.out.println("请输入数学分数:");
st[3] = sc.nextLine();
System.out.println("请输入英语分数:");
st[4] = sc.nextLine();
DB_Operations.getOracleAddData();
}catch(Exception ex){
ex.printStackTrace(st);
}
}
getData 方法:public void getData() throws Exception{
try{
Scanner sc = new Scanner(System.in);
System.out.println("请输入学号:");
st[0] = sc.nextLine();
System.out.println("请输入姓名:");
st[1] = sc.nextLine();
System.out.println("请输入语文分数:");
st[2] = sc.nextLine();
System.out.println("请输入数学分数:");
st[3] = sc.nextLine();
System.out.println("请输入英语分数:");
st[4] = sc.nextLine();
DB_Operations.getOracleAddData(st);
}catch(Exception ex){
ex.printStackTrace(st);
}
}