我于2019-07-09日写完第一个我自己学习,并做的关于数据库的小程序,虽然做出来了,但有许多的问题,现在分享一些我自己碰见的问题并加以改正。但只是一部分,因为还有一些正在解决。
其中不凡在博客上寻找相关解决的问题和知识点,现在分享给大家。
博客中其他大牛写的博客:
vector 向量
https://www.cnblogs.com/zhaoyan001/p/6077492.html
jtable的详细使用
https://blog.csdn.net/qq_36880602/article/details/80651652
jtable的用法
https://blog.csdn.net/tobin_xu/article/details/78934437
https://www.cnblogs.com/pzy4447/p/4925125.html
https://blog.csdn.net/kamiiyu/article/details/892070
jtable的用法,事件处理
https://www.cnblogs.com/lixiaolun/archive/2012/12/19/2825080.html
limite的用法
https://www.cnblogs.com/cheerfulness/p/mysql_1.html
JScrollPane的使用
https://blog.csdn.net/qq_40270751/article/details/78720699
对话框的使用
https://www.cn blogs.com/jiangxiulian/p/5961990.html
Java图形界面——下拉框、列表框、滚动窗格组件
https://blog.csdn.net/my98800/article/details/72621027
java语句中显示当前时间的方法
public Object insertTime() {
Calendar calendar= Calendar.getInstance();
SimpleDateFormat dateFormat= new SimpleDateFormat(“yyyy-MM-dd :hh:mm:ss”);
return dateFormat.format(calendar.getTime());
}
JAVA学习中Swing概述中的JFrame学习 http://www.cnblogs.com/biehongli/p/57465
菜单栏
https://blog.csdn.net/bananachong/article/details/81660236
接下来是我从中遇到的一些问题
1.在文本框中只输入数字
String price=caiPingPriceText.getText();
if(price.matches("^[0.0-9.0]+$")) {
System.out.println("是数字");
} else {
System.out.println("输入的是乱码");}
}
2.我怎么才能判断数据我注册的账号在数据库中是否存在呢?
先用数据库语句
select gzhanghao from administrator
List<Administrator>list=qr.query(sql, new BeanListHandler<Administrator>(Administrator.class));
然后在页面层判断这个返回来的list的大小是不是==0,如果是,说明数据库中没有,如果不是,则证明数据库中有
同理,我登录也是这样,判断查找出来的账号和密码的数组是否为空
controller.sjSelect(zhangHao,miMa).size()==0
3.怎么将数据库中的数据显示到表格中?
Object [][] data;
Object [] columnNames= {"ID","菜名","种类","价格"};
List <Menu> list=controller.selectAllMenu();
data=new Object[list.size()][8];
for(int i=0;i<list.size();i++) {
Menu menu=list.get(i);
data[i][0]=menu.getMid();
data[i][1]=menu.getMname();
data[i][2]=menu.getVariety();
data[i][3]=menu.getMprice();
}
Object [][]rowdata=data;
DefaultTableModel defaultTableModel = new DefaultTableModel(data,columnNames);
table.setModel(defaultTableModel);
JScrollPane scrollPane = new JScrollPane(table);
scrollPane.setViewportView(table);
那么我们可以进一步考虑怎么更新,如果我将表中的数据添加,删改,那么表应该刷新的,那么实现的方法是,我在写一个遍历的方法,来对表进行刷新
Object [][] data;
Object [] columnNames= {"ID","菜名","种类","价格"};
List<Menu> list=controller.selectAllMenu();
Object data1[][]=new Object[list.size()][4];
for(int i=0;i<list.size();i++) {
Menu menu =list.get(i);
data1[i][0]=menu.getMid();
data1[i][1]=menu.getMname();
data1[i][2]=menu.getVariety();
data1[i][3]=menu.getMprice();
}
Object [][]rowdata=data1;
DefaultTableModel defaultTableModel1=new DefaultTableModel(data1,columnNames);
ShangJiaCaiDanBiaoYeMian.table.setModel(defaultTableModel1);
defaultTableModel1.fireTableDataChanged();
ShangJiaCaiDanBiaoYeMian.table.updateUI();
}
此处用到了表格的刷新方法,
defaultTableModel1.fireTableDataChanged();
ShangJiaCaiDanBiaoYeMian.table.updateUI();
还有一个这个刷新表格的方法
table.invalidate();
- 分页问题:
分页的话,一个是考虑是否有刷新,就比如上一页,下一页
另一个是跳转,如何实现我输入哪页,那么实现的是哪页
首先我们要限制页数有多少行,这里用到了limit
SELECT mid,mname,variety,mprice FROM menu LIMIT Star, recordCount?
Star为起始行数, recordCount为限定的行数有多少
先用数据库的函数查询总条数
SELECT COUNT(*) FROM menu
int star=0;//定义页数的起始位置
int pageSize=20;//定义记录条数为20条
int totalRecouds=(int) menuController.selectSumPage();
//totalRecouds总记录条数
inttotalPages=totalRecouds%pageSize==0?totalRecouds/pageSize:totalRecouds/pageSize+1 ;//总页数
int page3=1;
String page2="1";
在此要注意的是,在数据库中查询的第一页是从0开始的,所以其页数要加1
这是其中的一些问题,在以后我还会在进行补充,来满足其中的不足,希望能对刚学数据库的小伙伴起到一些帮助。