下面是我寫的代碼,思路是想先把JTtable表格中的每一格資料依次存入 value 中然后再把 value 的資料存入資料庫。寫的程式沒有報錯也可以運行但是資料卻存不進資料庫(資料庫內直接不顯示內容),有沒有大神知道問題出在哪了
(問題大致所在還是知道的,但是具體是什么不清楚。而且以前從來沒學過資料庫,這次是大作業突然讓用到才接觸到的,希望能講明白些)
注:設計存入的表如下

package 測驗;
import javax.swing.*;
import java.awt.Panel;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Toolkit;
import javax.swing.table.DefaultTableModel;
public class Text2 extends JFrame implements ActionListener
{
private JButton button2;
private JTable table;
public static void main(String[] args)
{
Text text = new Text();
}
public Text2()
{
setIconImage(Toolkit.getDefaultToolkit().getImage("E:\\windows_biulder\\tubiao\\9.png"));
this.setSize(1200,800);
this.setLocation(300,100);
this.setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JScrollPane scrollPane = new JScrollPane();
getContentPane().add(scrollPane, BorderLayout.CENTER);
table = new JTable();
table.setModel(new DefaultTableModel(
new Object[][]
{
{"蘋果", "6", "5000", "\u7EA2\u5BCC\u58EB"},
{"香蕉", "3", "3000", "\u7F8E\u4EBA\u8549"},
{"柑橘", "4", "6000", "\u6A58\u91CC\u6A58\u6C14"},
{"菠蘿", "10", "4000", "\u5927\u83E0\u841D"},
},
new String[]
{
"\u8D27\u7269\u540D\u79F0", "\u4EF7\u683C (\u5143 / \u516C\u65A4)", "\u5E93\u5B58\u91CF (\u516C\u65A4)", "\u4F9B\u8D27\u5546"
}
));
scrollPane.setViewportView(table);
this.setVisible(true);
JPanel panelUP = new JPanel();
getContentPane().add(panelUP, BorderLayout.NORTH);
panelUP.setLayout(new FlowLayout(FlowLayout.LEFT));
JButton add = new JButton("增加");
add.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
}
});
panelUP.add(add);
JButton del = new JButton("洗掉");
panelUP.add(del);
//============================問題所在部分=======================================
JButton save = new JButton("保存");
save.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
int column = table.getColumnCount(); // 表格列數
int row = table.getRowCount(); // 表格行數
String[][] value = new String[row][column]; //建立一個二維陣列
for(int i = 0; i < row; i++) //將每個表格的值存進陣列
{
for(int j = 0; j < column; j++)
{
value[i][j] = table.getValueAt(i, j).toString();
}
}
connectionlain c = new connectionlain();
Connection conn = c.getConnect();
PreparedStatement cs = null;
try
{
int rows = table.getRowCount();
// 將value陣列中的資料依次存放到aa表中
for(int i = 0; i < rows; i++)
{
for(int j = 0; j < column; j++)
{
cs = conn.prepareStatement("insert into fruit values(?,?,?,?)");
cs.setString(1,value[i][0]);
cs.setString(2,value[i][1]);
cs.setString(3,value[i][2]);
cs.setString(4,value[i][3]);
}
}
}
catch (SQLException e1)
{
// TODO Auto-generated catch block
System.out.println("未成功打開資料庫。");
e1.printStackTrace();
}
}
});
//==================================================================================
panelUP.add(save);
JButton button1 = new JButton("回傳");
button1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == button1)
{
dispose();
new Newframe();
}
}
});
panelUP.add(button1);
}
@Override
public void actionPerformed(ActionEvent e)
{
// TODO Auto-generated method stub
}
}
附:其中的 connectionlain() 是用來連接資料庫用的
其代碼如下:
package 測驗;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class connectionlain
{
public Connection getConnect()
{
Connection con;
String url="jdbc:mysql://127.19.0.1:3306/student? useSSL=true"; //student為資料庫名
String user="root";
String password="617716";
try
{
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection(url, user, password);
return con;
}
catch(ClassNotFoundException e)
{
System.out.println("錯誤");
e.printStackTrace();
return null;
}
catch(SQLException e)
{
e.printStackTrace();
return null;
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/237264.html
標籤:Eclipse
下一篇:求助演算法與資料結構課程設計
