使用来自文本文件的数据通过Java更新MySQL表

时间:2013-10-29 07:22:41

标签: java mysql

我有一个包含四行的文本文件,每行包含逗号分隔值,如下面的文件

我的档案是:

    Raj,raj34@myown.com,123455
   kumar,kumar@myown.com,23453
   shilpa,shilpa@myown.com,765468
   suraj,suraj@myown.com,876567

我有一个包含四个字段的MySQL表

  firstname    lastname      email                phno
  ----------  ----------    ---------            --------
   Raj           babu      raj34@hisown.com       2343245
   kumar         selva     kumar@myown.com        23453
   shilpa        murali    shilpa@myown.com       765468
   suraj         abd       suraj@myown.com        876567

现在我想通过Java使用上面文本文件中的数据更新我的表。

我尝试使用bufferedReader从文件中读取并使用逗号作为分隔符的split方法并将其存储在数组中。但它没有用。任何帮助表示赞赏。

这是我到目前为止所尝试的

void readingFile()
    {
        try
        {
            File f1 = new File("TestFile.txt");
            FileReader fr = new FileReader(f1);
            BufferedReader br = new BufferedReader(fr);
            String strln = null;
                        strln = br.readLine();

            while((strln=br.readLine())!=null)
            {
//              System.out.println(strln);
                                 arr = strln.split(",");
                                 strfirstname = arr[0];
                                 strlastname = arr[1];
                                stremail = arr[2];
                                strphno = arr[3];
                                System.out.println(strfirstname + " " + strlastname + " " + stremail +" "+ strphno);
                        } 

//                        for(String i : arr)
//                        {

//                        }


            br.close();
            fr.close();
        }
        catch(IOException e)
        {
            System.out.println("Cannot read from File." + e);
        }

        try
           {
                st = conn.createStatement();
                String query = "update sampledb set email = stremail,phno =strphno where  firstname = strfirstname ";
                st.executeUpdate(query);
                st.close();
                System.out.println("sampledb Table successfully updated.");
            }
             catch(Exception e3)
            {
             System.out.println("Unable to Update sampledb table. " + e3);   
           }

    }

我得到的输出是:

Ganesh Pandiyan ganesh1@myown.com 9591982389
Dass Jeyan jeyandas@myown.com 9689523645
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
Gowtham Selvan gowthams@myown.com 9894189423
    at TemporaryPackages.FileReadAndUpdateTable.readingFile(FileReadAndUpdateTable.java:35)
    at TemporaryPackages.FileReadAndUpdateTable.main(FileReadAndUpdateTable.java:72)
Java Result: 1

@varadaraj: 这是你的代码......

String stremail,strphno,strfirstname,strlastname;
//    String[] arr;
    Connection conn;
    Statement st;
    void readingFile()
    {
        try {
             BufferedReader bReader= new BufferedReader(new FileReader("TestFile.txt"));
             String fileValues;

            while ((fileValues = bReader.readLine()) != null)
            {
                String[] values=fileValues .split(",");
                strfirstname = values[0];
//                strlastname = values[1];
                stremail = values[1];
                strphno = values[2];
                System.out.println(strfirstname + " " + strlastname + " " + stremail +" "+ strphno);
            }
        bReader.close();
    } catch (IOException e) {
        System.out.println("File Read Error");
    }
//                        for(String i : arr)
//                        {

//                        }



        try
           {
                st = conn.createStatement();
                String query = "update sampledb set email = stremail,phno =strphno where  firstname = strfirstname ";
                st.executeUpdate(query);
                st.close();
                System.out.println("sampledb Table successfully updated.");
            }
             catch(Exception e3)
            {
             System.out.println("Unable to Update sampledb table. " + e3);   
           }

    }

3 个答案:

答案 0 :(得分:0)

试试这个

    public class FileReaderTesting {
    static String stremail;
    static String strphno;
    static String strfirstname;
    static String strlastname;
    static Connection conn;
    static Statement st;
    public static void main(String[] args) {


            try {
                 BufferedReader bReader= new BufferedReader(new FileReader("C:\\fileName.txt"));
                 String fileValues;

                while ((fileValues = bReader.readLine()) != null)
                {
                    String[] values=fileValues .split(",");
                    strfirstname = values[0];
//                  strlastname = values[1];
                    stremail = values[1];
                    strphno = values[2];
                    System.out.println(strfirstname + " " + stremail +" "+ strphno);

                        st = conn.createStatement();
                        String query = "update sampledb set email = '"+stremail+"',pno = '"+strphno+"' where  firstname = '"+strfirstname+"' ";
                        System.out.println(query);
                        st.executeUpdate(query);
                        st.close();
                        System.out.println("sampledb Table successfully updated.");
                }
            bReader.close();
        } catch (IOException e) {
            System.out.println("File Read Error");
        }
            catch(Exception e3)
            {
             System.out.println("Unable to Update sampledb table. " + e3);   
           }


    }
}

答案 1 :(得分:0)

您所拥有的内容看起来像是一个CSV文件,您可以考虑像Super CSV这样的库来帮助您阅读和解析该文件。

答案 2 :(得分:0)

在尝试访问索引1时,即在lastname字段值时,您将获得ArrayIndexOutOfBoundException,因此请检查文本文件中任何列表元素的索引1是否没有数据