java,我这插入到数据库表中有这么多数的小数位变多了是怎么回事啊

如题所述

你要不然用float类型保留两位小数,这需要将数据库temperature表数据全删除,表结构中也就是在数据库中float类型的one,two,three,four列的大小一栏填5,2

要不然你就不用float类型来存储温度数据,而用String类型来存储one,two,three,four的温度数据,这需要将数据库temperature表数据全删除,表结构中one,two,three,four列改成varchar类型,然后把Java程序中

ps=conn.prepareStatement(sql);
     ps.setInt(1, Integer.parseInt(m.group(1)));
     ps.setInt(2, Integer.parseInt(m.group(2)));
     ps.setFloat(3, Float.parseFloat(m.group(3)));
     ps.setFloat(4, Float.parseFloat(m.group(4)));
     ps.setFloat(5, Float.parseFloat(m.group(5)));
     ps.setFloat(6, Float.parseFloat(m.group(6)));
     ps.executeUpdate();

改成

ps=conn.prepareStatement(sql);
ps.setInt(1, Integer.parseInt(m.group(1)));
ps.setInt(2, Integer.parseInt(m.group(2)));
ps.setString(3, m.group(3));
ps.setString(4, m.group(4));
ps.setString(5, m.group(5));
ps.setString(6, m.group(6));
ps.executeUpdate();

改完后重新导入数据,就行了。

改动后的完整的Java程序如下:(改动的地方见注释)

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 java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CCA {
 //SQLServer
 private String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";//加载驱动程序  
 private String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=master";//设置数据库连接串  master为数据库名
 private String user = "sa";//数据库登录用户名  
 private String password = "root";//数据库登录密码  
 public Connection getConnection() {  
  try {  
   Class.forName(driverName);  
   return DriverManager.getConnection(url, user, password);  
  } catch (Exception e) {  
   e.printStackTrace();  
   return null;  
  }  
 }  
 public static void main(String[] args) {
  CCA dcm = new CCA();  
  String sql = "insert into temperature(group,layer,one,two,three,four) values(?,?,?,?,?,?)";
  Connection conn=null;
  PreparedStatement ps=null;
  BufferedReader br=null;
  try {
   conn = dcm.getConnection(); 
   br=new BufferedReader(new FileReader("sourcefile.txt"));
   String s="";
   String regex="(\\d+)\\s+(\\d+)\\s+(\\d+\\.\\d+)\\s+(\\d+\\.\\d+)\\s+(\\d+\\.\\d+)\\s+(\\d+\\.\\d+)";
   while((s=br.readLine())!=null){
    s=s.trim();
    Pattern p=Pattern.compile(regex);
    Matcher m=p.matcher(s);
    if(m.matches()){
     //System.out.println(m.group(1)+" "+m.group(2)+" "+m.group(3)+" "+m.group(4)+" "+m.group(5)+" "+m.group(6));
     ps=conn.prepareStatement(sql);
     ps.setInt(1, Integer.parseInt(m.group(1))); 
     ps.setInt(2, Integer.parseInt(m.group(2))); 
     ps.setString(3, m.group(3)); //这里改一下 
     ps.setString(4, m.group(4)); //这里改一下
     ps.setString(5, m.group(5)); //这里改一下
     ps.setString(6, m.group(6)); //这里改一下
     ps.executeUpdate();
    }
   }
   System.out.println("数据插入完毕!");
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }catch (SQLException e) { 
    e.printStackTrace();
   }finally{
   try {
    ps.close();
    conn.close();
    br.close();
   } catch (Exception e) {
    e.printStackTrace();
   }
  }
 }
}

来自:求助得到的回答
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-06-06
double类型的缺陷,你保留2位小数就好了