A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马不黑 中级黑马   /  2014-1-12 09:33  /  973 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package imp;
  2. import java.io.BufferedReader;
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.FileReader;
  6. import java.io.IOException;
  7. import java.io.InputStreamReader;
  8. import java.sql.Connection;
  9. import java.sql.DriverManager;
  10. import java.sql.PreparedStatement;
  11. import java.sql.SQLException;



  12. public class ReadText {
  13.         public void readTxt(String filePath,PreparedStatement state)
  14.         throws IOException {
  15. FileReader f = new FileReader(filePath);
  16. BufferedReader bufferedreader = new BufferedReader(
  17.                 (new InputStreamReader(new FileInputStream(new File(filePath)),"utf-8")));//编码方式为utf-8,txt保存时编码方式也要选择为utf-8
  18. String instring;
  19. String[] strArr = null;
  20. while ((instring = bufferedreader.readLine()) != null) {
  21.         if (0 != instring.length()) {
  22.                 strArr = instring.split(",");//与txt文件中的分隔符要一致
  23.                 addDataToState(strArr,state);
  24.         }
  25. }

  26. }
  27.         public void addDataToState(String[] strArr, PreparedStatement state) {
  28.                 try {
  29.                         state.setString(1, strArr[0]);
  30.                         state.setString(2, strArr[1]);
  31.                         state.setString(3, strArr[2]);
  32.                         state.setString(4, strArr[3]);
  33.                         state.setString(5, strArr[4]);
  34.                         state.setString(6, strArr[5]);
  35.                         state.setString(7, strArr[6]);
  36.                         state.setString(8, strArr[7]);
  37.                         state.setString(9, strArr[8]);
  38.                         state.setString(10, strArr[9]);
  39.                         state.setString(11, strArr[10]);
  40.                         state.setString(12, strArr[11]);
  41.                         state.setString(13, strArr[12]);
  42.                         state.setString(14, strArr[13]);
  43.                         state.setString(15, strArr[14]);
  44.                         
  45.                 } catch (SQLException e) {
  46.                         e.printStackTrace();
  47.                 }
  48.         }
  49.         public void saveData(String filePath) {
  50.                 Connection conn = null;// 得到你的数据库连接
  51.                 try {
  52.                         Class.forName("oracle.jdbc.driver.OracleDriver");
  53.                 } catch (ClassNotFoundException e2) {
  54.                         // TODO Auto-generated catch block
  55.                         e2.printStackTrace();
  56.                 }
  57.                 String url = "jdbcracle:thinlocalhost:1521:XE";
  58.                 String user = "chqf429";
  59.                 String password = "167459";
  60.                 try {
  61.                         conn = DriverManager.getConnection(url, user, password);
  62.                 } catch (SQLException e1) {
  63.                         // TODO Auto-generated catch block
  64.                         e1.printStackTrace();
  65.                 }
  66.                 PreparedStatement state = null;
  67.                 try {
  68.                         conn.setAutoCommit(false);// 设置手动提交事务
  69.                         state = conn
  70.                                         .prepareStatement("insert into adult(age,workclass,fnlwgt,education,education-num," +
  71.                                                         "marital-status,occupation,relationship,race,sex,capital-gain," +
  72.                                                         "capital-loss,hours-per-week,native-country,salary) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
  73.                         this.readTxt(filePath,state);//第一个参数为txt文件路径
  74.                         conn.commit();//提交数据
  75.                 } catch (Exception e) {
  76.                         e.printStackTrace();
  77.                 } finally {
  78.                         close(conn, state);
  79.                 }
  80.         }
  81.         public void close(Connection conn, PreparedStatement state) {
  82.                 try {
  83.                         if (conn != null) {
  84.                                 conn.close();
  85.                                 conn = null;
  86.                         }
  87.                         if (state != null) {
  88.                                 state.close();
  89.                                 state = null;
  90.                         }
  91.                 } catch (SQLException e) {
  92.                         e.printStackTrace();
  93.                 }

  94.         }

  95. public static void main(String[] args) {
  96.         String filePath= "G:/adult.txt";
  97.                 ReadText rt = new ReadText();
  98.                 rt.saveData("");//参数为你的txt文件路径
  99.         }
  100. }
  101. 错误为
  102. java.io.FileNotFoundException:
  103.         at java.io.FileInputStream.open(Native Method)
  104.         at java.io.FileInputStream.<init>(FileInputStream.java:106)
  105.         at java.io.FileInputStream.<init>(FileInputStream.java:66)
  106.         at java.io.FileReader.<init>(FileReader.java:41)
  107.         at imp.ReadText.readTxt(ReadText.java:21)
  108.         at imp.ReadText.saveData(ReadText.java:80)
  109.         at imp.ReadText.main(ReadText.java:107)
复制代码
我想把文件adult.txt中的数据读进表adult中,可就是出错

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 淡定

查看全部评分

1 个回复

倒序浏览
我来说说问题:
1,首先你贴出来的代码61行写错,应为Class.forName("oracle.jdbc.driver.OracleDriver"),少了个点
2,确定你有G:/adult.txt这个文件
3,确定你数据库有adult这个表
4,你的state都没有执行,请在state.setString(15, strArr[14]);后加上state.executeUpdate();
以上问题解决就行了,我的是没问题的,有问题再问

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马