源代码:
package javaswingexercise;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;
public class TableModelEvent_Test extends JFrame {
private static final long serialVersionUID = 1L;
private JTextField textField;
private DefaultTableModel tableModel;
private JTable table;
private JLabel label;
public static void main(String args[]) {
try {
TableModelEvent_Test frame = new TableModelEvent_Test();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
public TableModelEvent_Test() {
super();
setTitle("25-9");
setBounds(100, 100, 500, 375);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JPanel panel = new JPanel();
getContentPane().add(panel, BorderLayout.NORTH);
final JLabel label_1 = new JLabel();
label_1.setText("数量:");
panel.add(label_1);
textField = new JTextField();
textField.setColumns(10);
textField.setEditable(false);
textField.setText((int) (Math.random() * 1000) + "");
panel.add(textField);
final JButton button = new JButton();
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Object[] rowValues = { table.getRowCount() + 1,
Integer.valueOf(textField.getText()) };
tableModel.addRow(rowValues);
textField.setText((int) (Math.random() * 1000) + "");
}
});
button.setText("插入");
panel.add(button);
final JScrollPane scrollPane = new JScrollPane();
getContentPane().add(scrollPane, BorderLayout.CENTER);
String[] columnNames = { "编号", "数量" };
tableModel = new DefaultTableModel(null, columnNames);
tableModel.addTableModelListener(new TableModelListener() {
public void tableChanged(TableModelEvent e) {
int sum = 0;
for (int i = 0; i < table.getRowCount(); i++) {
sum += (Integer) tableModel.getValueAt(i, 1);
}
label.setText("数量总计:" + sum);
}
});
table = new JTable(tableModel);
scrollPane.setViewportView(table);
label = new JLabel();
label.setText("数量总计:0");
getContentPane().add(label, BorderLayout.SOUTH);
//
}
}
运行截图:
学习总结:
安装(基于centos)
yum -y install mariadb mariadb-server # centos7版本
yum -y install mysql mysql-server #centos7以下版本
启动
service mysqld start #开启 centos7以下版本
chkconfig mysqld on #设置开机自启
OR
systemctl start mariadb #centos7
systemctl enable mariadb
设置密码
1 mysqladmin -u root -p123 password '1234' #修改root用户密码
2. 进入mysql库修改user表
mysql>use mysql;
mysql>update user set password=password('你的密码') where user='root';
mysql>flush privileges;
登录
mysql #本地登录,默认用户root,空密码,用户为root@127.0.0.1
-- mysql -uroot -p1234 #本地登录,指定用户名和密码,用户为root@127.0.0.1
-- mysql -uroot P端口号 -h 192.168.31.95 -p密码 #远程登录,用户为root@192.168.31.95
查看
ps aux |grep mysqld #查看进程
netstat -an |grep 3306 #查看端口
mysql的常用命令
--
-- 启动mysql服务与停止mysql服务命令:
--
-- net start mysql
-- net stop mysql
--
--
-- **登陆与退出命令:**
--
-- mysql -h 服务器IP -P 端口号 -u 用户名 -p 密码 --prompt 命令提示符 --delimiter 指定分隔符
-- mysql -h 127.0.0.1 -P 3306 -uroot -p123
-- quit------exit----q;
--
--
-- s; ------my.ini文件:[mysql] default-character-set=gbk [mysqld] character-set-server=gbk
--
-- prompt 命令提示符(D:当前日期 d:当前数据库 u:当前用户)
--
-- T(开始日志) (结束日志)
--
-- show warnings;
--
-- help() ? h
--
-- G;
--
-- select now();
-- select version();
-- select user;
--
-- c 取消命令
--
-- delimiter 指定分隔符
忘记密码
方法一:启动mysql时,跳过授权表
[root@controller ~]# service mysqld stop
[root@controller ~]# mysqld_safe --skip-grant-table &
[root@controller ~]# mysql
mysql> select user,host,password from mysql.user;
+----------+-----------------------+-------------------------------------------+
| user | host | password |
+----------+-----------------------+-------------------------------------------+
| root | localhost | *A4B6157319038724E3560894F7F932C8886EBFCF |
| root | localhost.localdomain | |
| root | 127.0.0.1 | |
| root | ::1 | |
| | localhost | |
| | localhost.localdomain | |
| root | % | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
+----------+-----------------------+-------------------------------------------+
mysql> update mysql.user set password=password("123") where user="root" and host="localhost";
mysql> flush privileges;
mysql> exit
[root@controller ~]# service mysqld restart
[root@controller ~]# mysql -uroot -p123
sql及其规范
<1> 在数据库系统中,SQL语句不区分大小写(建议用大写) 。但字符串常量区分大小写。建议命令大写,表名库名小写;
<2> SQL语句可单行或多行书写,以“;”结尾。关键词不能跨多行或简写。
<3> 用空格和缩进来提高语句的可读性。子句通常位于独立行,便于编辑,提高可读性。
1
2
SELECT * FROM tb_table
WHERE NAME="YUAN";
<4> 注释:单行注释:--
多行注释:/*......*/
<5>sql语句可以折行操作
库备份
dbname参数表示数据库的名称;
table表示备份那个数据库的表名
backupname备份数据库名字
第一种:备份一个数据库的那些表
mysqldump -u username -p dbname table1 table2 ...-> BackupName.sql
第二种:备份多个数据库
mysqldump -u username -p --databases dbname2 dbname2 > Backup.sql
加上了--databases选项,然后后面跟多个数据库
第三种:备份所有库
mysqldump -u username -p -all-databases > BackupName.sql
第四种:就是将MySQL中的数据库文件直接复制出来。这是最简单,速度最快的方法。
不过在此之前,要先将服务器停止,这样才可以保证在复制期间数据库的数据不会发生变化。
如果在复制数据库的过程中还有数据写入,就会造成数据不一致。这种情况在开发环境可以,
但是在生产环境中很难允许备份服务器。
注意:这种方法不适用于InnoDB存储引擎的表,而对于MyISAM存储引擎的表很方便。
同时,还原时MySQL的版本最好相同。
第五种:第三方client软件备份
还原库
mysql -u root -p dbname< BackupName.sql
dbname 是可选项 ,是用于某些表还原到那些库才需要用到dbname
直接还原库不用加上dbname,也就是数据库名