第一节 通过jdbc连接数据库
第二节 通过datasource开源项目连接数据库
第三节 事务控制
第四节 数据库应用程序开发
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
提示:以下是本篇文章正文内容,下面案例可供参考
示例一:利用 rowData 和 columnNames 创建
Object data[][] = {{"cf","man",new Integer(19),"dangyuan"},
{"cf","man",new Integer(19),"dangyuan"},
{"cf","man",new Integer(19),"dangyuan"},
};
String colString[] = {"name","sex","age","society"};
JTable table = new JTable(data,colString);
JScrollPane pane = new JScrollPane(table);
table.setRowHeight(25);
JFrame f = new JFrame();
f.setSize(300,200);
f.add(pane);
f.setVisible(true);
示例二 :利用tableModel来创建JTable
表格数据必须实现tabelModel接口,生成tablemodel类型对象来表示数据有两种方法
1.继承或者创建defaulttablemodel类
2.继承abstracttablemodel类,但是其中的getcolumncount和getrowcount,getvalueat,getcolumnname方法必须重写
Object data[][] = {{"cf","man",new Integer(19),"dangyuan"},
{"cf","man",new Integer(19),"dangyuan"},
{"cf","man",new Integer(19),"dangyuan"},
};
String colString[] = {"name","sex","age","society"};
DefaultTableModel tableModel = new DefaultTableModel(data,colString);
JTable table = new JTable(tableModel);
JScrollPane pane = new JScrollPane(table);
table.setRowHeight(25);
JFrame f = new JFrame();
f.setSize(300,200);
f.add(pane);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
示例三:利用Vector创建表格
public class vector_demo {
JFrame f;
JTable table;
JScrollPane pane;
DefaultTableModel tableModel;
Vector coVector = new Vector();
Vector dataVector = new Vector();
public vector_demo() {
coVector.add("name");
coVector.add("sex");
coVector.add("age");
coVector.add("society");
Vector data1 = new Vector();
data1.add("cf");
data1.add("man");
data1.add(19);
data1.add("dangyuan");
Vector data2 = new Vector();
data2.add("cf");
data2.add("man");
data2.add(19);
data2.add("dangyuan");
dataVector.add(data1);
dataVector.add(data2);
tableModel = new DefaultTableModel(dataVector,coVector);
table = new JTable(tableModel);
table.setRowHeight(25);
JScrollPane pane = new JScrollPane(table);
JFrame f = new JFrame();
f.add(pane);
f.setSize(400,200);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new vector_demo();
}
}
在使用vector创建时,注意此时的选中行为一个向量,故默认选中一行
table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
代码如下(示例):
处理行选中事件需要实现ListSelectionListener接口,此接口中只含有一个方法valueChanged(ListSelectionEvent e)
注册监听器对象时,需要先获取表格列表的选择模型
代码如下(示例):
package show_demo;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableModel;
public class select_demo implements ListSelectionListener{
JFrame f;
JTable table;
JScrollPane pane;
DefaultTableModel tableModel;
public select_demo() {
f = new JFrame();
String coString[] = {"name","sex","age"};
Object[][] data = {
{"cy","man",19},
{"cy","man",11},
{"cy","man",12}
};
tableModel = new DefaultTableModel(data,coString);
table = new JTable(tableModel);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
pane = new JScrollPane(table);
f.add(pane);
f.setSize(260,150);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 注册监听器
table.getSelectionModel().addListSelectionListener(this);
}
public static void main(String[] args) {
new select_demo();
}
@Override
public void valueChanged(ListSelectionEvent e) {
// TODO Auto-generated method stub
int SelectedRow = table.getSelectedRow();
for(int i = 0;i
该处使用的url网络请求的数据。
用Java程序连接自己的建立的数据库表,用table展示并删除
package show_demo;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
public class connect_and_show_demo implements ActionListener {
static Vector dataVector = new Vector();
JFrame f;
JTable table;
JScrollPane pane;
DefaultTableModel tableModel;
public connect_and_show_demo(DefaultTableModel defaultTableModel) {
// TODO Auto-generated constructor stub
tableModel = defaultTableModel;
table = new JTable(tableModel);
table.setRowHeight(25);
JScrollPane scrollPane = new JScrollPane(table);
JFrame f = new JFrame();
JButton jb = new JButton("删除");
JPanel jPanel = new JPanel(new GridLayout(2,1));
jPanel.add(scrollPane);
jPanel.add(jb);
f.add(jPanel);
f.setSize(400,200);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jb.addActionListener(this);
}
public static void main(String[] args) {
try {
Connection c = connect();
if(c != null) {
System.out.println("连接成功···");
}
String psql = "SELECT * FROM student";
PreparedStatement pst = c.prepareStatement(psql);
ResultSet prs = pst.executeQuery();
Vector colVector = new Vector();
colVector.add("id");
colVector.add("name");
colVector.add("gender");
colVector.add("score");
// Vector dataVector = new Vector();
while(prs.next()) {
Vector newVector = new Vector();
newVector.add(prs.getInt(1));
newVector.add(prs.getString(2));
newVector.add(prs.getString(3));
newVector.add(prs.getString(4));
dataVector.add(newVector);
}
DefaultTableModel tabeModel = new DefaultTableModel(dataVector,colVector);
new connect_and_show_demo(tabeModel);
// System.out.println(dataVector.get(0));
pst.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
int SelectRow = table.getSelectedRow();
System.out.println(SelectRow);
Connection c = connect();
if(SelectRow == -1) {
disconnect(c);;
System.exit(0);
}
int id = (int) tableModel.getValueAt(SelectRow, 0);
// System.out.println(dataVector.get(0));
tableModel.removeRow(SelectRow);
String psql = "delete from student where id = ?";
PreparedStatement pst;
try {
pst = c.prepareStatement(psql);
pst.setInt(1, id);
pst.executeUpdate();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
static Connection connect() {
Connection c = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String password = "0927";
String usename = "root";
String url = "jdbc:mysql://localhost:3306/mysql?serverTimeZone=UTC";
c = DriverManager.getConnection(url,usename,password);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return c;
}
static void disconnect(Connection c) {
try {
c.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package show_demo;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
public class system_connect {
static String[] college = {"控计","能动","电气","人文", "核学院", "数理","国教"};
JFrame frame = null;
static Connection c = null;
String[] dataStrings = new String[5];
JTable jTable = null;
DefaultTableModel defaultTableModel = null;
Vector dataVectors = null;
static PreparedStatement pstm = null;
String[] label = {"项目类型","项目名称","所属学院","项目队长","成员人数"};
static JPanel panel = null;
static JPanel panel1 = null;
static JPanel panel2 = null;
static Vector<String> colVector = new Vector<String>() ;
static void insertSystem(Connection c,String[] dataStrings) throws SQLException {
String psql = "insert into systemTable values(?,?,?,?,?)";
pstm = c.prepareStatement(psql);
for(int i=0;i<5;i++) {
pstm.setString(i+1, dataStrings[i]);
}
pstm.executeUpdate();
// pstm.close();
}
static ResultSet searchSystem(Connection c,String searchString) throws SQLException {
// String[] returnStrings = new String[5];
String psql = "SELECT * FROM systemTable where 所属学院 = ?";
pstm = c.prepareStatement(psql);
pstm.setString(1, searchString);
ResultSet prs = pstm.executeQuery();
// pstm.close();
return prs;
}
// 构造函数
public system_connect() throws SQLException {
// TODO Auto-generated constructor stub
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 加载驱动成功
String url = "jdbc:mysql://localhost:3306/mysql?ServerTimezone = UTC";
String username = "root";
String password = "0927";
try {
c = DriverManager.getConnection(url,username,password);
if(c != null) {
System.out.println("连接成功。。。");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
frame = new JFrame("大学生创新创业管理系统");
panel = new JPanel(new GridLayout(1,2));
panel1 = new JPanel(new GridLayout(6,1));
JPanel panel11 = new JPanel();
panel11.add(new JLabel("项目类型"));
JRadioButton radioButton1 = new JRadioButton("创新");
JRadioButton radioButton2 = new JRadioButton("创业");
ButtonGroup buttonGroup = new ButtonGroup();
buttonGroup.add(radioButton1);
buttonGroup.add(radioButton2);
panel11.add(radioButton1);
panel11.add(radioButton2);
panel1.add(panel11);
JPanel panel12 = new JPanel();
panel12.add(new JLabel("项目名称 "));
JTextField jTextField1 = new JTextField(8);
panel12.add(jTextField1);
panel1.add(panel12);
JPanel panel13 = new JPanel();
panel13.add(new JLabel("所属学院 "));
JComboBox comboBox = new JComboBox(college);
panel13.add(comboBox);
panel1.add(panel13);
JPanel panel14 = new JPanel();
panel14.add(new JLabel("项目组长"));
JTextField jTextField2 = new JTextField(8);
panel14.add(jTextField2);
panel1.add(panel14);
JPanel panel15 = new JPanel();
panel15.add(new JLabel("成员人数"));
JTextField jTextField3 = new JTextField(8);
panel15.add(jTextField3);
panel1.add(panel15);
JPanel panel16 = new JPanel();
JButton jButton1 = new JButton("录入");
panel16.add(jButton1);
jButton1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
// 创新创业被选中情况
if(radioButton1.isSelected()) {
dataStrings[0] = "创新";
radioButton1.setSelected(false);
}
else {
dataStrings[0] = "创业";
radioButton2.setSelected(false);
}
// 项目名称
dataStrings[1] = jTextField1.getText();
jTextField1.setText(null);
// 所属院系
int selectInt = comboBox.getSelectedIndex();
dataStrings[2] = college[selectInt];
// 项目组长
dataStrings[3] = jTextField2.getText();
jTextField2.setText(null);
// 项目人数
dataStrings[4] = jTextField3.getText();
jTextField3.setText(null);
// connectTable(jTable, dataStrings);
try {
// System.out.println(dataStrings);
insertSystem(c,dataStrings);
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
panel1.add(panel16);
panel2 = new JPanel();
panel2.setLayout(new BorderLayout());
JPanel panel22 = new JPanel();
panel22.add(new JLabel("所属学院 "));
JComboBox comboBox2 = new JComboBox(college);
JButton jButton = new JButton("查找");
panel22.add(comboBox2);
panel22.add(jButton);
jButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
int selectInt = comboBox2.getSelectedIndex();
ResultSet prs;
try {
prs = searchSystem(c,college[selectInt]);
dataVectors = new Vector<>();
while(prs.next()) {
Vector<String> dataVector = new Vector<String>();
for(int i = 0;i<5;i++) {
dataVector.add(prs.getString(i+1));
}
dataVectors.add(dataVector);
} }catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
for(int i=0;i<5;i++) {
colVector.add(label[i]);
}
// dataVectors.add(dataVector);
defaultTableModel = new DefaultTableModel(dataVectors,colVector);
jTable = new JTable(defaultTableModel);
JScrollPane jScrollPane = new JScrollPane(jTable);
panel2.add(jScrollPane,BorderLayout.NORTH);
}
});
panel2.add(panel22,BorderLayout.SOUTH);
panel.add(panel1);
panel.add(panel2);
frame.add(panel);
frame.setVisible(true);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) throws SQLException {
// TODO Auto-generated method stub
new system_connect();
}
}