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
![Java GUI Import CSV/Text to Database Java GUI Import CSV/Text to Database](https://www.thaicreate.com/upload/tutorial/java-gui-example-import-csv-text-database-03.jpg?v=1001)
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
![Java GUI Import CSV/Text to Database Java GUI Import CSV/Text to Database](https://www.thaicreate.com/upload/tutorial/java-gui-example-import-csv-text-database-04.jpg?v=1001)
โครงร้างของไฟล์ 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();
}
}
}
![](/images/adv.jpg)
Output
![Java GUI Import CSV/Text to Database Java GUI Import CSV/Text to Database](https://www.thaicreate.com/upload/tutorial/java-gui-example-import-csv-text-database-05.jpg?v=1001)
ในหน้า Frame หลักเลือก Button ของ Open File Choose
![Java GUI Import CSV/Text to Database Java GUI Import CSV/Text to Database](https://www.thaicreate.com/upload/tutorial/java-gui-example-import-csv-text-database-06.jpg?v=1001)
เลือกไฟล์ CSV หรือ Text ที่ต้องการ ซึ่งจะต้องตรงกับ Format ที่ได้ออกแบบไว้
![Java GUI Import CSV/Text to Database Java GUI Import CSV/Text to Database](https://www.thaicreate.com/upload/tutorial/java-gui-example-import-csv-text-database-07.jpg?v=1001)
โปรแกรมจะโหลดไฟล์ CSV หรือ Text มาแสดงใน JTable ให้ยืนยันข้อมูล Save
![Java GUI Import CSV/Text to Database Java GUI Import CSV/Text to Database](https://www.thaicreate.com/upload/tutorial/java-gui-example-import-csv-text-database-08.jpg?v=1001)
แสดงสถานะการ Import เรียบร้อย
![Java GUI Import CSV/Text to Database Java GUI Import CSV/Text to Database](https://www.thaicreate.com/upload/tutorial/java-gui-example-import-csv-text-database-09.jpg?v=1001)
เมื่อกลับไปดูใน Database ข้อมูลถูก Import เข้าเรียบร้อย
กรณีที่ใช้ร่วมกับ Database อื่น ๆ สามารถดูวิธีการใช้ Connector และ Connection String ได้ที่นี่
Property & Method (Others Related) |
|
ช่วยกันสนับสนุนรักษาเว็บไซต์ความรู้แห่งนี้ไว้ด้วยการสนับสนุน Source Code 2.0 ของทีมงานไทยครีเอท
|
|
|
By : |
ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ) |
|
Score Rating : |
![](/images/resource/startrue.gif) |
|
|
Create/Update Date : |
2013-09-10 10:07:22 /
2017-03-27 21:58:00 |
|
Download : |
No files |
|
Sponsored Links / Related |
|
|
|
|
|