【问题标题】:trying to read the arguments for a jdbc programfrom an text file but getting an number format exception?试图从文本文件中读取 jdbc 程序的参数但得到数字格式异常?
【发布时间】:2013-12-09 13:47:47
【问题描述】:
package com.first;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import com.mysql.jdbc.Driver;

public class Preparedtatementexm3 {

public static void main(String[] args)
{

    Connection con=null;
    PreparedStatement pstmt=null;
    /*
     * 1.load the driver
     * driver class :com.mysql.jdbc.Driver

     */

    try {
        Driver driverref=new Driver();
        DriverManager.registerDriver(driverref);
        /*
         * 2.get db connection via driver
         */
        String DbUrl="jdbc:mysql://localhost:3306/college?    
                     user=suhas&password=j2ee";
        con=DriverManager.getConnection(DbUrl);
        /*
         * 3.issue SQL queries via Connection
         */
        String query="insert into students_info values(?,?,?,?)";
        pstmt=con.prepareStatement(query);
        String fileloc="C:\\Users\\SUHAS B K GOWDA\\Desktop\\New Text  
                    Document (2).txt";  
        FileReader reader=new FileReader(fileloc);
        BufferedReader br=new BufferedReader(reader);
        String linedata=null;
        while((linedata=br.readLine())!=null){
            String[] data=linedata.split(" ");
            pstmt.setInt(1,Integer.parseInt(data[0]));
            pstmt.setString(2,data[1]);
            pstmt.setString(3,data[2]);
            pstmt.setString(4, data[3]);
            int count=pstmt.executeUpdate();
            System.out.println("no of rows affected count "+count);
        }

        /*
         * 4.process the results returned by sql query
         */
        /*while(rs.next()){
            int dbregno=rs.getInt("regno");
            String fname=rs.getString("firstname");
            String mname=rs.getString("middlename");
            String lname=rs.getString("lastname");
            System.out.println("regno "+dbregno);
            System.out.println("first name "+fname );
            System.out.println("middlename "+mname);
            System.out.println("lastname "+lname);
            }//end of while
            */

    }
    catch (SQLException e) 
    {
        e.printStackTrace();
    } catch (FileNotFoundException e) {

        e.printStackTrace();
    } catch (Exception e) {

        e.printStackTrace();
    }
    finally
    {
        /*
         * close all jdbc objects
         */
        try {
            if(con!=null){
                con.close();

            }
            if(pstmt!=null){
                pstmt.close();
            }

        } catch (SQLException e) {

            e.printStackTrace();
        }
     }
    }
    }

即使它返回输出异常也被打印为什么会这样??? 控制台正在显示 受影响的行数 1 在 java.lang.NumberFormatException.forInputString(未知来源) 在 java.lang.Integer.parseInt(未知来源) 在 java.lang.Integer.parseInt(未知来源) 在 com.first.Preparedstatementexm3.main(Preparedstatementexm3.java:46)

【问题讨论】:

  • 嗯,你的文件包含什么?
  • 16 mahendra singh dhoni 我的文件中有以上数据@SotiriosDelimanolis

标签: java mysql sql jdbc


【解决方案1】:

这条pstmt.setInt(1,Integer.parseInt(data[0])); 行导致了异常。

data[0] 的内容不是有效数字。您最好调试或打印data[0] 中存在的值。其他可能性是data[0] 可能有空间,在这种情况下尝试Integer.parseInt(data[0].trim())

【讨论】:

  • 我试过 Integer.parseInt(data[0].trim())。但结果没有改变。@Prabhakaran
  • @user3079190 请打印 data[0] 值。 System.out.println(data[0]) 并找出存在的值。
  • 它正在打印我在文本文件中给出的整数。
  • @user3079190 请使用您的输入文件更新您的问题。
  • 输入文件包含“16 mahendra singh dhoni”这四个参数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-06
  • 2019-11-10
  • 1970-01-01
相关资源
最近更新 更多