我正在尝试从txt文件中获取一些记录,并将这些记录放在以下Java程序的数据库中

package Java_Demo;
import java.sql.*;
import java.util.*;
import java.io.*;

public class Jdbc_Demo {


    public static void main(String ...args)throws ClassNotFoundException,SQLException,FileNotFoundException {

        FileInputStream fin=new FileInputStream("C:/Users/steve-pc/Desktop/Employees.txt");
        Scanner s=new Scanner(fin);
        s.useDelimiter(",|\\n");

        Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection con=DriverManager.getConnection("jdbc:oracle:thin:@172.22.22.131:1521:orcl","Demo","demo");
        while(s.hasNext())
        {

        PreparedStatement st=con.prepareStatement("Insert into Employee values(?,?,?)");

        String name=s.next();
        int  id=s.nextInt();
        int sal=s.nextInt();

        st.setString(1,name);
        st.setInt(2,id);
        st.setInt(3,sal);

        int result=st.executeUpdate();
        System.out.println("Records Changed: "+ result);

        }
        con.close();

    }

 }


我从中获取数据的txt文件具有以下格式

史蒂夫(Steve)12349,550000

马克54321,250000

比尔65478,350000

此外,EMPLOYEE表具有以下格式

姓名ID工资

Varachar2号码号码

但是代码正在生成以下错误

线程“主”中的异常java.util.InputMismatchException

at java.util.Scanner.throwFor(Scanner.java:909)

at java.util.Scanner.next(Scanner.java:1530)

at java.util.Scanner.nextInt(Scanner.java:2160)
at java.util.Scanner.nextInt(Scanner.java:2119)
at Java_Demo.Jdbc_Demo.main(Jdbc_Demo.java:24)

最佳答案

进行如下更改:

public class ScannerTest {


    public static void main(String ...args)throws ClassNotFoundException,SQLException,FileNotFoundException {

        File f =new File("/home/rahul/Desktop/emp.txt");
        Scanner s=new Scanner(f);
        Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection con=DriverManager.getConnection("jdbc:oracle:thin:@172.22.22.131:1521:orcl","Demo","demo");
        while(s.hasNext())
        {

        PreparedStatement st=con.prepareStatement("Insert into Employee values(?,?,?)");

        String rcd = s.next();
        Scanner s1 = new Scanner(rcd);
        s1.useDelimiter(",|\\n");

        String name=s1.next();
        int  id=s1.nextInt();
        int sal=s1.nextInt();

        st.setString(1,name);
        st.setInt(2,id);
        st.setInt(3,sal);

        int result=st.executeUpdate();
        System.out.println("Records Changed: "+ result);

        }
        con.close();

    }

 }
}

10-04 13:57