How to use : Java GUI Import CSV/Text to Database |
How to use : Java GUI Import CSV/Text to Database บทความนี้จะเป็นการเขียน Java GUI เพื่อทำการ Import ข้อมูลในรูปแบบของไฟล์ CSV หรือไฟล์ TXT เเข้าจัดเก็บใน Database โดยในขั้นแรกเราจะออกแบบ Dialog สำหรับการ Browse ไฟล์ CSV/TXT และหลังจากที่เลือกไฟล์แล้ว ข้อมูลจะถูกอ่านมาแสดงผลที่ JTable เพื่อให้ผู้ใช้ทำการยืนยันข้อมูล ก่อนที่จะ Import ลงใน Database ซึ่งจะมีปุ่ม Save เพื่อนำข้อมูลทั้งหมดจัดเก็บใน Database ตามต้องการ
How to use : Java GUI Import CSV/Text to Database
How to use : Java GUI Import CSV/Text to Database
ในตัวอย่างนี้จะเลือกใช้ Database ของ MySQL แต่ในกรณีที่จะใช้ร่วมกับ Database อื่น ๆ ก็สามารถทำได้ง่าย ๆ เพียงแค่เปลี่ยน Connector และ Connection String เท่านั้น สามารถอ่านเพิ่มเติมได้ที่บทความนี้
Java Connect to MySQL Database (JDBC)
โครงสร้างของ MySQL และ Table
CREATE TABLE `customer` (
`CustomerID` varchar(4) NOT NULL,
`Name` varchar(50) NOT NULL,
`Email` varchar(50) NOT NULL,
`CountryCode` varchar(2) NOT NULL,
`Budget` double NOT NULL,
`Used` double NOT NULL,
PRIMARY KEY (`CustomerID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
คำสั่งของ SQL ที่สามารถนำไปรันบน Query เพื่อสร้าง Table และ Rows ได้ทันที
thaicreate.csv
C001,Win Weerachai,[email protected],TH,1000000,600000
C002,John Smith,[email protected],UK,2000000,800000
C003,Jame Born,[email protected],US,3000000,600000
C004,Chalee Angel,[email protected],US,4000000,100000
โครงร้างของไฟล์ CSV
Example การ Import ข้อมูลไฟล์ CSV หรือ Text เข้าจัดเก็บใน Database
MyForm.java
package com.java.myapp;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
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.SQLException;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.table.DefaultTableModel;
public class MyForm extends JFrame {
private JTable table;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
MyForm form = new MyForm();
form.setVisible(true);
}
});
}
public MyForm() {
// Create Form Frame
super("ThaiCreate.Com Java GUI Tutorial");
setSize(668, 345);
setLocation(500, 280);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(null);
// Label Result
final JLabel lblResult = new JLabel("Result", JLabel.CENTER);
lblResult.setBounds(150, 22, 370, 14);
getContentPane().add(lblResult);
// Table
table = new JTable();
getContentPane().add(table);
// Table Model
final DefaultTableModel model = (DefaultTableModel)table.getModel();
model.addColumn("CustomerID");
model.addColumn("Name");
model.addColumn("Email");
model.addColumn("CountryCode");
model.addColumn("Budget");
model.addColumn("Used");
// ScrollPane
JScrollPane scroll = new JScrollPane(table);
scroll.setBounds(84, 98, 506, 79);
getContentPane().add(scroll);
// Create Button Open JFileChooser
JButton btnButton = new JButton("Open File Chooser");
btnButton.setBounds(268, 47, 135, 23);
btnButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFileChooser fileopen = new JFileChooser();
FileFilter filter = new FileNameExtensionFilter(
"Text/CSV file", "txt", "csv");
fileopen.addChoosableFileFilter(filter);
int ret = fileopen.showDialog(null, "Choose file");
if (ret == JFileChooser.APPROVE_OPTION) {
// Read Text file
File file = fileopen.getSelectedFile();
try {
BufferedReader br = new BufferedReader(new FileReader(
file));
String line;
int row = 0;
while ((line = br.readLine()) != null) {
String[] arr = line.split(",");
model.addRow(new Object[0]);
model.setValueAt(arr[0], row, 0);
model.setValueAt(arr[1], row, 1);
model.setValueAt(arr[2], row, 2);
model.setValueAt(arr[3], row, 3);
model.setValueAt(arr[4], row, 4);
model.setValueAt(arr[5], row, 5);
row++;
}
br.close();
} catch (IOException ex) {
// TODO Auto-generated catch block
ex.printStackTrace();
}
lblResult.setText(fileopen.getSelectedFile().toString());
}
}
});
getContentPane().add(btnButton);
// Button Save
JButton btnSave = new JButton("Save");
btnSave.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
SaveData(); // save Data
}
});
btnSave.setBounds(292, 228, 89, 23);
getContentPane().add(btnSave);
}
private void SaveData()
{
Connection connect = null;
Statement s = null;
try {
Class.forName("com.mysql.jdbc.Driver");
connect = DriverManager.getConnection(""
+ "jdbc:mysql://localhost/mydatabase"
+ "?user=root&password=root");
s = connect.createStatement();
for(int i = 0; i<table.getRowCount();i++)
{
String CustomerID = table.getValueAt(i, 0).toString();
String Name = table.getValueAt(i, 1).toString();
String Email = table.getValueAt(i, 2).toString();
String CountryCode = table.getValueAt(i, 3).toString();
String Budget = table.getValueAt(i, 4).toString();
String Used = table.getValueAt(i, 5).toString();
// SQL Insert
String sql = "INSERT INTO customer "
+ "(CustomerID,Name,Email,CountryCode,Budget,Used) "
+ "VALUES ('" + CustomerID + "','"
+ Name + "','"
+ Email + "'" + ",'"
+ CountryCode + "','"
+ Budget + "','"
+ Used + "') ";
s.execute(sql);
}
JOptionPane.showMessageDialog(null,
"Import Data Successfully");
} catch (Exception ex) {
// TODO Auto-generated catch block
JOptionPane.showMessageDialog(null, ex.getMessage());
ex.printStackTrace();
}
try {
if (s != null) {
s.close();
connect.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}
Output
ในหน้า Frame หลักเลือก Button ของ Open File Choose
เลือกไฟล์ CSV หรือ Text ที่ต้องการ ซึ่งจะต้องตรงกับ Format ที่ได้ออกแบบไว้
โปรแกรมจะโหลดไฟล์ CSV หรือ Text มาแสดงใน JTable ให้ยืนยันข้อมูล Save
แสดงสถานะการ Import เรียบร้อย
เมื่อกลับไปดูใน Database ข้อมูลถูก Import เข้าเรียบร้อย
กรณีที่ใช้ร่วมกับ Database อื่น ๆ สามารถดูวิธีการใช้ Connector และ Connection String ได้ที่นี่
Property & Method (Others Related) |
|
ช่วยกันสนับสนุนรักษาเว็บไซต์ความรู้แห่งนี้ไว้ด้วยการสนับสนุน Source Code 2.0 ของทีมงานไทยครีเอท
|
|
|
By : |
ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ) |
|
Score Rating : |
|
|
|
Create/Update Date : |
2013-09-10 10:07:22 /
2017-03-27 21:58:00 |
|
Download : |
No files |
|
Sponsored Links / Related |
|
|
|
|
|