天天看點

賬本——mysql資料庫的增加,删除及修改

首先是界面設計要點:

~~~~JButton:

Dimension preferredSize=new Dimension(150,40);//改變按鈕大小

button.setPreferredSize(preferredSize);

~~~~JLabel:

JLabel label=new JLabel("月份",JLabel.CENTER);//設定文字居中

label.setFont(new Font("宋體",Font.PLAIN,16));//設定字型

label.setBounds(0,0,1200,670);//設定位置及大小

label.setForeground(Color.red);//設定顔色

ImageIcon icon=new ImageIcon(D:/Eclipse/cat.jpg);//一般用絕對路徑好,src/cat.jpg,轉出exe時圖檔不顯示

label.setIcon(icon);//标簽顯示圖檔

~~~~JTable//JTabel table = new JTabel();

table.setRowHeight(50);//指定每一行的 行高為50

table.setRowHeight(2,30);//指定第2行的高度為30

table.getTableHeader().setFont(new Font("Dialog",0,19));//設定标題字型及大小

table.setFont(new Font("Dialog",0,19))//設定表格字型及大小

for(int i=0;i<11;i++){

    TableColumn column=table.getColumnModel().getColumn(i);

    column.setPreferredWidth(80);//指定所有列寬為80

    if(i<6){column.setPreferredWidth(80)}//指定前6列列寬為80

}

String[] Names={};

String[][]data={}

DefaultTableModel tablemodel=new DefaultTableModel(data,Names);

JTable table=new JTable(tabelmodel);

~~~~布局管理器

1、GridBagLayout,方法

public void addg(Component c,GridBagConstraints constraints,int x,int y,int w,int h) {

        //此方法用來添加控件到容器中

        constraints.gridx=x;

        constraints.gridy=y;

        constraints.gridwidth=w;

        constraints.gridheight=h;

        add(c,constraints);

    }    

GridBagConstraints constrains=new GridBagConstraints();

        constrains.fill=GridBagConstraints.NONE;  //這個可以保證大小一緻

        constrains.anchor=GridBagConstraints.WEST; //左對齊

        constrains.weightx=2;  //這兩行是關鍵,如果不設定,表示元件大小固定,不管面闆如何變,

        constrains.weighty=2;

panel.addg(jlmonth,constrains,0,0,1,1);

2、flowLayout

panel.setLayout(new FlowLayout(3,10,10));//3列,間隔10

panel.add(label1);panel.add(text1);panel.add(label11);

jf.getContentPane().add(panel);    

_______________________________________________________________________________________

其次是資料庫的增加,删除,修改。

~~~~進入資料庫步驟:1、進入指令行輸入D:  2、輸入cd Program Files\mysql-5.5.62-winx64\bin  

3、輸入net start mysql  4、輸入mysql -uroot -p  5、輸入密碼

6、修改密碼方法mysql> set password for 使用者名@localhost = password('新密碼'); 

      mysql> set password for [email protected] = password('123');

7、檢視資料庫show databases;------use test;-----show tables;-----select * from student;

~~~~連接配接資料庫方法Connection conn=getConn();

public static Connection getConn() {
	Connection conn=null;
	try {   
		Class.forName("com.mysql.jdbc.Driver");   
		conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","密碼"); 
	}catch(ClassNotFoundException e) {
		e.printStackTrace();
	}catch(SQLException e) {
		e.printStackTrace();
	}
		return conn;
	}
           

~~~~~将資料插入資料庫

PreparedStatement ps=null;

String sql = "INSERT INTO account(month,zhaoh,jianh,taobao,cash,stock,asset,remarks) "+"values(?,?,?,?,?,?,?,?)";

try {
     ps=conn.prepareStatement(sql);
     ps.setString(1, jtmonth.getText());ps.setString(2, jtzhaoh.getText());
     ps.setString(3, jtjianh.getText());ps.setString(4, jttaobao.getText());
     ps.setString(5, jtcash.getText());ps.setString(6, jtstock.getText());
     int sum=Integer.parseInt(jtzhaoh.getText())+...+Integer.parseInt(jtstock.getText());
     ps.setString(7, String.valueOf(sum));ps.setString(8, jtremarks.getText());
//總資金為2到6相加,先相加存到資料庫中,
     ps.executeUpdate();//sql必須是insert,update,delete語句,或者為空

}catch (SQLException b){ 
     b.printStackTrace(); 
}finally{ 
     try{ 
           conn.close();    System.out.println("MySQL 關閉成功"); 
        }catch (SQLException c){ 
           System.out.println("MySQL 關閉失敗 ");    c.printStackTrace(); 
        }
}
           

~~~~查詢資料庫輸入到JTable中

try{
    PreparedStatement ps = null;  ps=conn.prepareStatement("SELECT * FROM account");
    ResultSet res = null;  res=ps.executeQuery();//執行查詢
    
    while (res.next()) 
       { 
         temp= res.getString(7);//總資産需先記下,以計算資産變化
         if(num==1) {                    
               String[]row={res.getString(1),res.getString(2),res.getString(3),
                    res.getString(4),res.getString(5),res.getString(6),res.getString(7),
                    "",res.getString(8)};                    
               tablemodel.addRow(row);  
         }else{
               int assetchange=Integer.parseInt(res.getString(7))-
               Integer.parseInt(oldtemp);
               String [] row= {res.getString(1),res.getString(2),res.getString(3),
                  res.getString(4),res.getString(5),res.getString(6),res.getString(7),
                    String.valueOf(assetchange),res.getString(8)};
               //資産變化,直接計算然後輸入到JTable中。
               tablemodel.addRow(row); 
         }
            oldtemp=temp;System.out.println(oldtemp);//記錄上月資産 
       }                        
            System.out.println("load ok!"); 
}catch(Exception q){ 
            q.printStackTrace();   System.out.println("go die"); 
}finally {
            try {
                res.close();   ps.close();   conn.close();   
                System.out.println("close ok");   
            }catch (SQLException o){   
                o.printStackTrace();   System.out.println("go die 2"); 
            }
}
           

~~~~改變資料庫資料

String sql = "SELECT month,zhaoh,jianh,taobao,cash,stock,asset,remarks FROM account";//8
ResultSet res=null;   Statement stat=null;
stat=conn.createStatement();
res=stat.executeQuery(sql);
while(res.next())
{
   if (res.getString(1).equals(jtmonth.getText())) {
        String sql2="UPDATE account SET zhaoh='"+jtzhaoh.getText()+"' WHERE 
         month='"+jtmonth.getText()+"'";//注意此處的格式,用where設定條件,用'"+value+"'表值
         ...
        try{
             stat=conn.createStatement();
             stat=executeUpdate(sql2);
             ...
        }...
}
           

~~~~删除資料庫資料

String sql = "DELETE FROM account WHERE month='"+jtmonth.getText()+"'";
//jtmonth中的資料為條件,删除行。
try {
       stat=conn.createStatement();
       stat.executeUpdate(sql);                                             
}catch (SQLException e) {
       e.printStackTrace();
}finally {
       try{ 
             stat.close();conn.close();    System.out.println("MySQL 關閉成功"); 
       }catch (SQLException c){ 
             System.out.println("MySQL 關閉失敗 ");    c.printStackTrace(); 
       }
}
           

繼續閱讀