问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

谁能给个java的小例子,实现swing调用sql的表,并能进行增删改查操作。

发布网友 发布时间:2022-04-09 06:44

我来回答

3个回答

热心网友 时间:2022-04-09 08:13

LZ要得是代码,就给楼主代码嘛,对于刚学java的人来说肯定对API看得不是很明白,要有比较明确的例子才可以更好的去理解每一个方法,对于楼主的问题,我想说的,首先你要有一个很明确的思路,首先你要写一个DefaultTableModel,这个model是决定你如何显示这些信息的,比如说,第一行显示姓名,然后显示性别。等等。然后从数据库里获得数据,然后传入到这个model中。
其次在你的swing中定义一个table,然后实例化你定义的这个model,然后用table.setMode(DefaultTableModel),把你实例化的那个model传入到table中,这样就会在tabale中显示了你要的结果,至于你说要与数据库连接操纵,这里你就需要加入相关的鼠标listener了,在这个例子中,我给你加入了删除和修改两个操作,就是当对这表格点击鼠标的时候,会出现相应的选择。这你需要用到JPopupMenu, 和JPopupMenu的元素JMenuItem了

首先给你tablemodel的类:
//这个类定义了你如何在表格中显示数据和如何获得表格中的数据,需要把二维数组传入这个类,所以在构造函数中传入了二维数组
public class FriendTableModel extends DefaultTableModel {
private String[] columns = {"学号","姓名","性别","年龄","邮箱"};
private Object a[][];
public FriendTableModel(Object [][] a) {
this.a=a;
}

public Object getUserAt(int rowIndex)
{
Object[] u = a[rowIndex];
return u;
}
public void removeRow(int row) {
a[row]=null;
}

@Override
public Object getValueAt(int rowIndex, int columnIndex) {
Object[] u = a[rowIndex];
switch(columnIndex) {
case 0:
return u[0];
case 1:
return u[1];
case 2:
return u[2];
case 3:
return u[3];
case 4:
return u[4];
default:
return "";
}
}

@Override
public int getColumnCount() {
return columns.length;
}

@Override
public int getRowCount() {
if (a==null) return 0;
return a.length;
}

@Override
public boolean isCellEditable(int r, int c) {
return false;
}

@Override
public String getColumnName(int columnIndex) {
return columns[columnIndex];
}
}

然后给你主类,这个类中包含了与数据连接,把数据转换二维数组,定义各个操作的listener,等
public class DataFrame extends JFrame implements ActionListener
{
public static void main(String args[])
{
new DataFrame();
}
Connection con;
Statement stmt;
ResultSet rs;
Object a[][]; //这里的a[][]就是一个i行j列的表,用来显示数据库中数据用的
Object b[]; //从tablemode返回的一行数据, 当你修改数时,向数据库更新的时候,数据从这个对象中获得;
int row;//你修改或者要删除的行
int i=0; //输据的条数
JTable jTable = null;//用来显示表格
JPopupMenu jPopupMenu;//用来显示你对表格的操作
private JMenuItem delete; //删除操作
private JMenuItem upload;//修改操作
Object header[]={"学号","姓名","性别","年龄","邮箱"};//e是一个j列的表头,用来存储字段名称的,比如说上面的"学号","姓名"等字符串
DataFrame()
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e)
{
System.out.println("Error:"+e);
}
try{
con=DriverManager.getConnection("jdbc:odbc:mySql","sa","123");
stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs=stmt.executeQuery("select * from student");
while(rs.next())//把数据库数据写入二维数组
{
a[i][0]=rs.getInt(1);
a[i][1]=rs.getString(2);
a[i][2]=rs.getString(3);
a[i][3]=rs.getInt(4);
a[i][4]=rs.getString(5);
i++;
}
}
catch(SQLException e)
{
System.out.println("SqlError:"+e);
}
jTable = new JTable();
jTable.addMouseListener(new inMouseEven()); //给鼠标定义事件,就是你点击鼠标的时候,会发生的事情
jTable.setShowGrid(false);
jPopupMenu = new JPopupMenu();
delete = new JMenuItem();
delete.setText("删除");
delete.addMouseListener(new Delete_mouseAdapter());//给点击删除时增加事件
upload = new JMenuItem();
upload.setText("修改");
upload.addMouseListener(new Uoload_mouseAdapter());//给点击更新时增加事件
jPopupMenu.add(delete);
jPopupMenu.add(upload);
FriendTableModel ftm = new FriendTableModel(a); //实例化tablemodel,把二维数组传进去
if (ftm.getRowCount() > 0) {
jTable.setModel(ftm);//把Tablemodel传入table中
}
Container con=getContentPane();
getContentPane().add(new JScrollPane(jTable),BorderLayout.CENTER);
setSize(400,300);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
setVisible(true);
validate();
}

public void actionPerformed(ActionEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
//当你点击表格中的一行,出现选项,让你选择具体操作,此处是点击鼠标事件的具体代码
private class inMouseEven extends MouseAdapter {

@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() < 1) {
return;
}
row = jTable.getSelectedRow(); //返回你点击的行数
if (row >= 0) {
FriendTableModel ftm =(FriendTableModel) jTable.getModel();
b= ftm.getUserAt(row ); //返回此行的数据
jPopupMenu.show(DataFrame.this, e.getX() + 160, e.getY() + 75);//出现操作选项
}

}
}

//删除操作的listenr,对应的code
private class Delete_mouseAdapter extends MouseAdapter {
@Override
public void mousePressed(MouseEvent e) {
try {
String sql = "delete from **where id = " + b[0]; //此处b[]是上面当你点击鼠标是返回的那一行数据,b[]中对应的是表格中一行数据。
stmt.executeQuery(sql);
FriendTableModel ftm =(FriendTableModel) jTable.getModel();
ftm.removeRows(0, row );
jTable.updateUI();
} catch (SQLException ex) {
Logger.getLogger(DataFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

//更新操作对应的code
private class Uoload_mouseAdapter extends MouseAdapter {

@Override
public void mousePressed(MouseEvent e) {
String sql ="UPDATE Student SET Address = %s, City = %s WHERE id = %s" %b[1],b[2],b[0]...//这里sql自己写,就是更新所有的数据,新数据从b[...]中获得
stmt.executeQuery(sql);
}
}
}

其中一些sql语句没有给你写出,这个你照着你的数据库写,还有数据库的链接你需要改一下,上面的代码没有经过测试,因为我没有链接数据库,但是整体思路就应该是这样,对应你的具体要求,修改代码,我想应该可以运行起来的,你需要去理解这些代码,然后写出sql语句,给出正确的数据库配置,修改其中可能的错误。
所有代码都是亲手写的,希望对刚接触java的你有用。
如果你从中得到帮助,记得肯定我的劳动,给我分哦。

热心网友 时间:2022-04-09 09:31

如果要写出来代码太多了,给你个思路:JTable本身只是一个框架,它不承载数据,你看到的数据,也就是表格中的数据,其实是TableModel在显示,TableModel里面包含了一系列的增、删、改、查,相信你能看得懂API的,别人给你例子,永远都是别人的,除非你自己写出来。如果再不会,我们再联系

热心网友 时间:2022-04-09 11:06

你可以用JDBC连接数据库!import java.sql.*;
public class db {

String conURL="jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)}; "+"DBQ=db.mdb";
private Connection Ex1Con=null;
private Statement st=null;
private ResultSet rs=null;
public db()
{

try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (ClassNotFoundException e1) {
// TODO 自动生成 catch 块
e1.printStackTrace();
}
try {
Ex1Con=DriverManager.getConnection(conURL);
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
try {
st=Ex1Con.createStatement();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
//修改操作
public int exsql(String sql)
{
int num=0;
try {
st.executeUpdate(sql);
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
return num;

}
//查询操作
public ResultSet exselect(String sql)
{

try {
rs=st.executeQuery(sql);
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}

return rs;
}
//添加操作
public int exinsert(String sql)
{int num=0;

try {
num=st.executeUpdate(sql);

} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
return num;

}

//删除操作
public int exdelete(String sql)
{int num=0;

try {
num=st.executeUpdate(sql);
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
return num;
}
//关闭数据库
public void close()
{

rs=null;

try {
st.close();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
try {
Ex1Con.close();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}

}
这是我写的一个连接数据库和对数据库操作的类,你参考参考!用SWING就是调用的问题!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
第二次世界大战进一步爆发的标志是( )。 第二次世界大战扩大到最大规模、成为一场名符其实的世界大战的标志是... 第二次世界大战达到最大规模的标志是 [ ] A.德军突袭波兰,英法对德宣战... 笔记本电脑连接蓝牙音箱,小爱小度亲测有效!台式电脑估计也可以。_百度... 小爱音箱怎么连接到电脑上? 小爱音箱2怎么连接电脑? 如何将小爱音箱和电脑连接 ...打开文件 右击就能打印 现在右键的命令没有打印这一项 苹果雷雳4Pro 连接线 1m 评测:集快充、数据传输、视频传输于一身_百... 有一个健康问题我很想问一下大家,希望大家给我指导一下,如有答得对的... 干海参 在冰箱里潮湿了,晾干之后阴天又像是潮了的样子,这样的海参能恢复原来的样子吗?另外,有毒吗? 干海参鲍鱼回潮了怎么办? 棕色的牛皮鞋要怎么样保养 干海参掉水湿了可以晒太阳 捡到的oppo手机怎么解除账户密码 急求用皇宇鞋油给棕色的皮鞋打油,过两天鞋花了是怎么回事? 海参有点湿怎么才能晾干 皮鞋花了怎么办? 中餐桌为什么摆2个盘子 急求!!!棕色皮鞋花了 捡到的OPPOk9格式化后有账号锁怎么解开 棕色皮鞋被液体鞋油刷花了,怎么补救? “三个盘子待鳖,八个盘子待王八”,饭桌讲究,在理吗? 请问大盘子中间那个小盘子是干什么用的?吃宴会的时候做什么用? 我的棕色磨砂皮鞋给上了鞋油,皮面花了也发硬怎么办啊 西餐餐具里面有个三层上菜盘..为什么是三层呢..怎么使用才是正确的 巷道清洗工有哪些安全风险需要专项辩识,评估,分级管控? 西餐中,放在桌面的三个盘子分别是什么用途? 酒店吃饭的三个盘子是怎么用的 中餐吃饭有三个碟子是怎么用法? 干海参受潮后怎么处理?还可以食用吗? 刚买的棕色皮鞋该怎么保养? 海参湿了怎么才能速干 海参弄湿了 夏季如何贮藏干海参,如果受潮了怎么办? 干海参打开包装是湿的软的 干海参放着怎么会出水呢? 淡干海参受潮了怎么处理?还能不能吃? 个人能拍司法拍卖公司的厂房吗,拍下了能过户吗 租了个厂房后来*查封了现在要拍卖了我可以向*提异议终止拍卖吗? 法院把我的厂房拍卖了,我租的地没到期我还有使用权吗? 个人独资企业可参与厂房淘宝司法拍卖吗? 后厨主管是什么职位? 我租的厂房已付了三年租金,现因厂房拍卖*要我搬走,这样合理吗 一次性买定的小产权厂房,能拍卖吗? 厨房管理的岗位职责 没有房产证,土地证的厂房能申请查封,拍卖吗 哪些法拍厂房不能购买 参加拍卖前需要注意什么? 我公司在司法拍卖网上买了一个厂房如何交税 中餐主管的岗位职责是什么