当前位置: 代码迷 >> J2SE >> 文件导入到数据库解决方法
  详细解决方案

文件导入到数据库解决方法

热度:115   发布时间:2016-04-24 01:24:58.0
文件导入到数据库
/**
* 导入
*/
public void ImportTableTest(String TableName) {
Reader reader = null;
try {
char[] tempchars = new char[30];
int charread = 0;
reader = new InputStreamReader(new FileInputStream(TableName));

while ((charread = reader.read(tempchars)) != -1) {
if ((charread == tempchars.length) && (tempchars[tempchars.length - 1] != '\r')) {
System.out.print(tempchars);
} else {
for (int i = 0; i < charread; i++) {
if (tempchars[i] == '\r') {
continue;
} else {
System.out.print(tempchars[i]);
}
}
}
}
} catch (Exception e1) {
e1.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
e1.getMessage();
}
}
}
}

/**
* 事件
*/
public void actionPerformed(ActionEvent e){
// TODO Auto-generated method stub
if(e.getActionCommand().equals("...")){
try {
new Import().FileChooser();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}else if(e.getActionCommand().equals("导入")){
String str=jtextFiledImport.getText();
new Import().ImportTableTest(str);

}
}
“...”是选择文件路径的,点击导入调用最上面那个方法。现在文件我已经读到了、并可打印到控制台,我还需要怎么样才能导入到数据库中?

------解决方案--------------------
Java code
data.txt/////////////id,usename,pdate1,test1,2012-04-01 17:31:18.02,test2,2012-04-01 17:31:31.03,test3,2012-04-01 17:31:40.0/////////////数据库表/ test下表tcreate table t(id int primary key,usename varchar(20),pdate datetime);////////////import java.io.BufferedReader;import java.io.File;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.sql.Timestamp;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;public class Writer {    public static void main(String[] args) throws IOException, ClassNotFoundException, SQLException {        File f = new File("data.txt");        BufferedReader bf = new BufferedReader(new FileReader(f));                String driver = "com.mysql.jdbc.Driver";        String url = "jdbc:mysql://localhost/test";        String user = "root";        String password = "admin";        Connection conn = null;            Class.forName(driver);            conn = DriverManager.getConnection(url, user, password);            String sql = "insert into t values(?,?,?)";             //必须了解列名属性,假如列名属性已知;                        String[] columnNames =null;            List<String[]> lists = new ArrayList<String[]>();            String str = null;            int count = 0;            PreparedStatement pst = conn.prepareStatement(sql);            while ((str = bf.readLine())!= null){                if(count == 0){                    columnNames = str.split(",");                }                else{                    String s[] = str.split(",");System.out.println(s.length);//验证是不是和你的列名数相等                    lists.add(s);                                        pst.setInt(1, Integer.parseInt(s[0].trim()));                    pst.setString(2, s[1].trim());                    String s1 = s[2].replace("\\.\\d+", "");                    String DEFAULT_FORMAT = "yyyy-MM-dd HH:mm:ss.SSSS";                    SimpleDateFormat sdf = new SimpleDateFormat(DEFAULT_FORMAT);                    Date date = null;                    try {                        date = sdf.parse(s[2]);                    } catch (ParseException e){                        e.printStackTrace();                    }                    pst.setTimestamp(3,new Timestamp(date.getTime()));                    pst.addBatch();                                    }                count++;            }            pst.executeBatch();            pst.close();            conn.close();    }}//实例,里面有3种类型,你对照写。int,string,timeStamp怎么转换。具体情况具体分析
  相关解决方案