Advertisement
Guest User

Java GUI Vs mysql database Part 4 v1.87

a guest
Nov 23rd, 2016
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.75 KB | None | 0 0
  1. import javax.swing.*;
  2. import javax.swing.event.TableModelEvent;
  3. import javax.swing.table.DefaultTableModel;
  4. import java.awt.*;
  5. import java.awt.event.ActionEvent;
  6. import java.awt.event.ActionListener;
  7. import java.sql.*;
  8. import java.util.ArrayList;
  9. import java.util.Vector;
  10.  
  11. /**
  12. * Created by Admin on 18.11.2016.
  13. */
  14. public class JTableWindow extends JFrame{
  15.  
  16. private static final String url = "jdbc:mysql://localhost:3306/carsfff";
  17. private static final String user = "root";
  18. private static final String password = "root";
  19.  
  20.  
  21. // поля для открытия подключения и получения значенией с Mysql
  22. private static Connection con;
  23. private static Statement stmt;
  24. private static ResultSet rs;
  25.  
  26. Vector<Object> vector = new Vector<>();
  27.  
  28.  
  29. UpdateStringInTable updateStringInTable = new UpdateStringInTable();
  30.  
  31.  
  32. JButton btnUpdate = new JButton("Update");
  33. JButton btnAdd = new JButton("Add");
  34. JButton btnRemove = new JButton("Remove");
  35. JButton btnRefresh = new JButton("Refresh");
  36. JLabel labelID = new JLabel("ID:");
  37.  
  38.  
  39. // размер поля field 5
  40. JTextField field1 = new JTextField(5);
  41. JTextField field2 = new JTextField(5);
  42. JTextField field3 = new JTextField(5);
  43. JTextField field4 = new JTextField(5);
  44. JTextField field5 = new JTextField(5);
  45. JTextField fieldID = new JTextField(2);
  46.  
  47. //Объект таблицы
  48. JTable jTable;
  49.  
  50.  
  51.  
  52. JTableWindow() {
  53.  
  54. //вводим запрос ID в mysql
  55. addIdInTable();
  56.  
  57.  
  58. //Создаем новый контейнер JFrame
  59. JFrame jFrame = new JFrame("Mysql V1.87");
  60.  
  61. //разммер кнопок
  62. btnUpdate.setPreferredSize(new Dimension(100, 20));
  63. btnAdd.setPreferredSize(new Dimension(100, 20));
  64. btnRemove.setPreferredSize(new Dimension(100, 20));
  65. btnRefresh.setPreferredSize(new Dimension(100, 20));
  66.  
  67.  
  68. //Устанавливаем диспетчер компоновки
  69. jFrame.getContentPane().setLayout(new FlowLayout());
  70.  
  71.  
  72. //Устанавливаем размер окна
  73. jFrame.setSize(580, 470);
  74.  
  75. //Устанавливаем завершение программы при закрытии окна
  76. jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  77.  
  78. jFrame.add(field1);
  79. jFrame.add(field2);
  80. jFrame.add(field3);
  81. jFrame.add(field4);
  82. jFrame.add(field5);
  83.  
  84. jFrame.add(labelID);
  85.  
  86.  
  87. //Создадим список из сущностей класса ValueInTable
  88. ArrayList valueInTables = new ArrayList();
  89.  
  90. // получаем данные с конструктора ValueInTables
  91. getArrayListVal(valueInTables);
  92.  
  93.  
  94. //Создадим модель таблицы
  95. MyTableModel tModel = new MyTableModel(valueInTables);
  96.  
  97.  
  98.  
  99. // данные изменяются в таблице слушатель на кнопку
  100. btnUpdate.addActionListener(new ActionListener() {
  101. @Override
  102. public void actionPerformed(ActionEvent ae) {
  103. valueInTables.add(new ValueInTable(field1.getText(), field2.getText(),
  104. Integer.valueOf(field3.getText()), Integer.valueOf(field4.getText()),
  105. Integer.valueOf(field5.getText()) ) );
  106. updateStringInTable.updateValues(url, user, password, field1, field2, field3, field4, field5,
  107. con, stmt, rs, Integer.valueOf(fieldID.getText()) );
  108. tModel.fireTableDataChanged();
  109. }
  110. });
  111.  
  112. // данные обновляются в таблице слушатель на кнопку
  113. btnRefresh.addActionListener(new ActionListener() {
  114. @Override
  115. public void actionPerformed(ActionEvent ae) {
  116.  
  117. // обнуляем JTable
  118. // jTable.setModel(new DefaultTableModel());
  119.  
  120. getArrayListVal(valueInTables);
  121.  
  122. tModel.fireTableDataChanged();
  123. }
  124. });
  125.  
  126. //На основе модели, создадим новую JTable
  127. jTable = new JTable(tModel);
  128.  
  129.  
  130.  
  131. //Создаем панель прокрутки и включаем в ее состав нашу таблицу
  132. JScrollPane jscrlp = new JScrollPane(jTable);
  133.  
  134.  
  135. //Устаналиваем размеры прокручиваемой области
  136. jTable.setPreferredScrollableViewportSize(new Dimension(550, 200));
  137.  
  138. //Добавляем в контейнер нашу панель прокрути и таблицу вместе с ней
  139. jFrame.getContentPane().add(jscrlp);
  140.  
  141.  
  142. // добавляем кнопку на JFrame
  143. jFrame.getContentPane().add(labelID);
  144. jFrame.getContentPane().add(fieldID);
  145. jFrame.getContentPane().add( btnUpdate);
  146. jFrame.getContentPane().add( btnRefresh);
  147. jFrame.getContentPane().add( btnAdd);
  148. jFrame.getContentPane().add(btnRemove);
  149.  
  150.  
  151.  
  152. // отображение фрейма по центру
  153. jFrame.setLocationRelativeTo(null);
  154.  
  155. //Отображаем контейнер
  156. jFrame.setVisible(true);
  157. }
  158.  
  159.  
  160.  
  161. //в Vector-лист добавляются значения каждая новая строка по номеру id
  162. public void conToMysql(int id){
  163.  
  164. String query = "SELECT * FROM tbl1 where id=" + "'" + id + "'";
  165.  
  166. try {
  167. // opening database connection to MySQL server
  168. con = DriverManager.getConnection(url, user, password);
  169.  
  170. // getting Statement object to execute query
  171. stmt = con.createStatement();
  172.  
  173. // executing SELECT query
  174. rs = stmt.executeQuery(query);
  175.  
  176. // к-тво всех столбцов в таблице
  177. int allCol = rs.getMetaData().getColumnCount();
  178.  
  179. /*Вывод всей строки таблици из БД в list Vector*/
  180. while (rs.next()) {
  181. for (int i = 1; i <= allCol; i++) {
  182. vector.add(rs.getObject(i));
  183. }
  184. }
  185.  
  186.  
  187. } catch (SQLException sqlEx) {
  188. sqlEx.printStackTrace();
  189. } finally {
  190. //close connection ,stmt and resultset here
  191. try { con.close(); } catch(SQLException se) { /*can't do anything */ }
  192. try { stmt.close(); } catch(SQLException se) { /*can't do anything */ }
  193. try { rs.close(); } catch(SQLException se) { /*can't do anything */ }
  194. }
  195. }
  196.  
  197. //узнаем к-тво строк в БД
  198. public int getAllRowsMysql(){
  199.  
  200. String query = "SELECT count(*) FROM tbl1";
  201. int allRows = 0;
  202. try {
  203. // opening database connection to MySQL server
  204. con = DriverManager.getConnection(url, user, password);
  205.  
  206. // getting Statement object to execute query
  207. stmt = con.createStatement();
  208.  
  209. // executing SELECT query
  210. rs = stmt.executeQuery(query);
  211.  
  212.  
  213. /*Вывод строки таблици*/
  214. while (rs.next()) {
  215. allRows = rs.getInt(1);
  216. }
  217.  
  218.  
  219. } catch (SQLException sqlEx) {
  220. sqlEx.printStackTrace();
  221. } finally {
  222. //close connection ,stmt and resultset here
  223. try { con.close(); } catch(SQLException se) { /*can't do anything */ }
  224. try { stmt.close(); } catch(SQLException se) { /*can't do anything */ }
  225. try { rs.close(); } catch(SQLException se) { /*can't do anything */ }
  226. }
  227.  
  228. return allRows;
  229. }
  230.  
  231.  
  232. // метод с соединением и обновлением таблицы
  233. void addIdInTable(){
  234. for (int id = 1; id <= getAllRowsMysql(); id++)
  235. conToMysql(id);
  236. }
  237.  
  238. // получение ячеек таблицы с конструктора ValueInTable
  239. void getArrayListVal(ArrayList valueInTables){
  240. for (int val0 = 0, val1 = 1, val2 = 2, val3 = 3, val4 = 4, val5 = 5; val5 < 6 * getAllRowsMysql(); val0 +=6, val1 +=6, val2 +=6, val3 +=6, val4 +=6, val5 +=6 ) {
  241. valueInTables.add( new ValueInTable(vector.get(val0), vector.get(val1), vector.get(val2),
  242. vector.get(val3), vector.get(val4), vector.get(val5) ));
  243. }
  244.  
  245. }
  246.  
  247.  
  248.  
  249. //Функция main, запускающаяся при старте приложения
  250. public static void main(String[] args) {
  251.  
  252. //Создаем фрейм в потоке обработки событий
  253. SwingUtilities.invokeLater(new Runnable() {
  254. @Override
  255. public void run() {
  256. new JTableWindow();
  257. }
  258. });
  259. }
  260. }
  261.  
  262.  
  263. import javax.swing.*;
  264. import java.sql.*;
  265.  
  266. /**
  267. * Created by Admin on 21.11.2016.
  268. */
  269. public class UpdateStringInTable {
  270.  
  271.  
  272.  
  273. public void updateValues(String url, String user, String password, JTextField field1, JTextField field2,
  274. JTextField field3,JTextField field4,JTextField field5,
  275. Connection con, Statement stmt, ResultSet rs, int fieldId ){
  276. // поля для обновления значенией в Mysql
  277.  
  278. String query1 = "update tbl1 set CODE=" + "'"+ field1.getText() +"'" + "where id="+"'"+ fieldId +"'";
  279. String query2 = "update tbl1 set TYPE=" + "'"+ field2.getText() +"'" + "where id="+"'"+ fieldId +"'";
  280. String query3 = "update tbl1 set QUANTITY=" + "'"+ field3.getText() +"'" + "where id="+"'"+ fieldId +"'";
  281. String query4 = "update tbl1 set PRICE=" + "'"+ field4.getText() +"'" + "where id="+"'"+ fieldId +"'";
  282. String query5 = "update tbl1 set YEAR=" + "'"+ field5.getText() +"'" + "where id="+"'"+ fieldId +"'";
  283.  
  284. try {
  285. // opening database connection to MySQL server
  286. con = DriverManager.getConnection(url, user, password);
  287.  
  288. // getting Statement object to execute query
  289. stmt = con.createStatement();
  290.  
  291. // executing SELECT query
  292. stmt.executeUpdate(query1);
  293. stmt.executeUpdate(query2);
  294. stmt.executeUpdate(query3);
  295. stmt.executeUpdate(query4);
  296. stmt.executeUpdate(query5);
  297.  
  298. } catch (SQLException sqlEx) {
  299. sqlEx.printStackTrace();
  300. } finally {
  301. //close connection ,stmt and resultset here
  302. try { con.close(); } catch(SQLException se) { /*can't do anything */ }
  303. try { stmt.close(); } catch(SQLException se) { /*can't do anything */ }
  304. try { rs.close(); } catch(SQLException se) { /*can't do anything */ }
  305. }
  306. }
  307.  
  308. }
  309.  
  310.  
  311. import java.util.ArrayList;
  312.  
  313. /**
  314. * Created by Admin on 18.11.2016.
  315. */
  316. public class ValueInTable {
  317. Object id;
  318. Object code;
  319. Object type;
  320. Object quantity;
  321. Object price;
  322. Object year;
  323. ArrayList<Object> list = new ArrayList<>();
  324.  
  325. public ValueInTable(Object id, Object code, Object type, Object quantity, Object price, Object year){
  326. ArrayList<Object> list = new ArrayList<>();
  327. this.id = id;
  328. this.code = code;
  329. this.type = type;
  330. this.quantity = quantity;
  331. this.price = price;
  332. this.year = year;
  333. }
  334.  
  335. public ValueInTable(Object code, Object type, Object quantity, Object price, Object year){
  336. this.code = code;
  337. this.type = type;
  338. this.quantity = quantity;
  339. this.price = price;
  340. this.year = year;
  341. }
  342.  
  343. public Object getId() { return id; }
  344.  
  345. public Object getCode(){
  346. return code;
  347. }
  348.  
  349. public Object getType(){
  350. return type;
  351. }
  352.  
  353. public Object getQuantity(){
  354. return quantity;
  355. }
  356.  
  357. public Object getPrice(){
  358. return price;
  359. }
  360.  
  361. public Object getYear(){
  362. return year;
  363. }
  364. }
  365.  
  366.  
  367. import javax.swing.table.AbstractTableModel;
  368. import java.util.ArrayList;
  369.  
  370. /**
  371. * Created by Admin on 18.11.2016.
  372. */
  373.  
  374.  
  375. public class MyTableModel extends AbstractTableModel{
  376.  
  377. ArrayList<ValueInTable> valueInTable;
  378.  
  379. MyTableModel(ArrayList<ValueInTable> valueInTable){
  380. super();
  381. this.valueInTable = valueInTable;
  382. }
  383.  
  384. @Override
  385. public int getRowCount() {
  386. return valueInTable.size();
  387. }
  388.  
  389.  
  390. // к-тво столбцов
  391. @Override
  392. public int getColumnCount() {
  393. return 6;
  394. }
  395.  
  396. //данные в ячейке
  397. @Override
  398. public Object getValueAt(int rowIndex, int columnIndex) {
  399. if (columnIndex == 0)
  400. return valueInTable.get(rowIndex).getId();
  401. else if (columnIndex == 1)
  402. return valueInTable.get(rowIndex).getCode();
  403. else if (columnIndex == 2)
  404. return valueInTable.get(rowIndex).getType();
  405. else if (columnIndex == 3)
  406. return valueInTable.get(rowIndex).getQuantity();
  407. else if (columnIndex == 4)
  408. return valueInTable.get(rowIndex).getPrice();
  409. else if (columnIndex == 5)
  410. return valueInTable.get(rowIndex).getYear();
  411. else
  412. return "Other_Column";
  413.  
  414. }
  415.  
  416. public String getColumnName(int c){
  417. if (c == 0)
  418. return "id";
  419. else if (c == 1)
  420. return "Code ";
  421. else if (c == 2)
  422. return "Type ";
  423. else if (c == 3)
  424. return "Quantity ";
  425. else if (c == 4)
  426. return "Price ";
  427. else if (c == 5)
  428. return "Year ";
  429. else
  430. return "------";
  431. }
  432. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement