1. 程式人生 > >DB2 親身例項(GUI介面) 加 筆記和注意事項

DB2 親身例項(GUI介面) 加 筆記和注意事項

import java.lang.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import java.sql.*;
import java.util.*;
import javax.swing.table.DefaultTableModel;


//一開始總是點選按鈕不動,後來發現是忘記給控制元件新增監聽器了
public class tbGui extends JFrame implements ActionListener {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	JTable a;//先定義一個JTable型別
	JPanel b=new JPanel();//JPanel
	
	JButton putinS=new JButton("單行插入");
	JButton putinDuo=new JButton("多行插入");
	JButton putinDan=new JButton("子查詢插入");
	
	JTextField sole=new JTextField();//單行插入
	JTextArea duo=new JTextArea();//多行插入
	JTextField dan=new JTextField();//子查詢插入
	
	public DefaultTableModel tableModel;//建立表格模型物件
	
	JScrollPane duoInsert;//用於多行插入的上下滑動
	JScrollPane scrollPane;
	
	Connection sample;//用於連線資料庫
	
	//SQL語句
	//Statement物件是用於SQL語句操作的,一般一次性儲存操作用Statement。批量的情況下用PreparedStatement
	
	
	Container nn;
	public tbGui()
	{
		super("JTempl資料表\n");
		Object[][] playerInfo={
						//建立表格中的資料,Templ中是num和name
						{new Integer(1000),"王鵬"},
						{new Integer(1001),"朱雀"},
						{new Integer(1002),"大鯊魚"}
		};
		String[] Names = { "學號" , "姓名" };
		tableModel=new DefaultTableModel(playerInfo,Names);
		//建立JTableModel模板
		a=new JTable(tableModel);//構建JTable控制元件,利用DefaultTableModel模板,方便以後增加刪除行
		//a.setPreferredScrollableViewportSize(new Dimension(550,100));
		scrollPane = new JScrollPane(a);//為JTable a建立一個區域
	    scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);//顯示水平滑動欄
	    scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);//顯示豎直滑動欄
		
	    nn=getContentPane();
		nn.setLayout(null);//自由佈局
		
		duoInsert=new JScrollPane(duo);
		duoInsert.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);//顯示水平滑動欄
		duoInsert.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);//顯示豎直滑動欄
		
		nn.add(scrollPane);
		nn.add(putinS);
		nn.add(putinDuo);
		nn.add(sole);
		nn.add(duoInsert);
		nn.add(putinDan);//
		nn.add(dan);
		
		putinS.addActionListener(this);//在類內定義監聽器時候用this
		putinDuo.addActionListener(this);
		putinDan.addActionListener(this);
		sole.setBounds(10, 350, 400, 50);
		duoInsert.setBounds(10, 500, 400, 100);
		putinDuo.setBounds(430,500,100,100);
		putinS.setBounds(430, 350, 100, 50);
		scrollPane.setBounds(10,30,500,300);
		dan.setBounds(10, 650, 400, 50);
		putinDan.setBounds(430,650,100,50);
		nn.add(b);
		setSize(900,900);
		setVisible(true);
		try {

//錯誤根源
			sample = DriverManager.getConnection("jdbc:db2:sample","db2admin","db2admin");//連線資料庫
			sample.setAutoCommit(false);
		} catch (SQLException e) {
			// TODO 自動生成的 catch 塊
			JOptionPane.showMessageDialog(null, "資料庫錯誤", "找不到該資料庫",JOptionPane.ERROR_MESSAGE);
			e.printStackTrace();
		}  
		
		nn.add(b);
		Show();
		setSize(900,900);
		setVisible(true);
	}
	
	 static
	    {   try
	        {   
	         
	              Class.forName("COM.ibm.db2.jdbc.app.DB2Driver");//Class.forName用來載入字串所對應的類,
	              //這樣子DriverManager就可以使用了
	        }
	        catch (Exception e)
	        {   System.out.println ("\n  Error loading DB2 Driver...\n");
	            System.out.println (e);
	            System.exit(1);
	        }
	    }

	public void Show()//顯示資料庫中的資料到JTable上
	{
		try
		{
			String sql="select * from admin.TEMPL";//建立Sql語句,表前面要根據使用者的不同新增不同的使用者,比如admin使用者,建立了templ表
			System.out.println("");
			PreparedStatement stmt=sample.prepareStatement(sql);//建立Sql語句陳述,用來excute
			ResultSet rs=stmt.executeQuery();
			if(rs==null){System.out.println("結果集無資料");return;}//如果表沒有資料應該返回
			ResultSetMetaData rest=rs.getMetaData();//得到列數,變數型別等需要這個列
			int row=rs.getRow();
			int colum=rest.getColumnCount();//得到列數
			for(int i=0;i<=row-1;i++)
			{
				String[] ggget=new String[colum];
				for(int j=0;j<=colum-1;j++)
				{
					ggget[j]=rs.getString(j);
					
				}
				tableModel.addRow(ggget);
				if(!rs.next())
				{
					break;
				}
				
			}//得到了TEMPL表中的所有資料並且進行顯示
			
			
		}
		catch(Exception e)
		{
			System.out.println(e.getMessage());
		}
		
	}
	
	public static void main(String[] args)
	{
		tbGui nn=new tbGui();
		nn.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	
	
	
	
	
	

	public void actionPerformed(ActionEvent e) {
		// TODO 自動生成的方法存根
		if(e.getSource()==putinS)
		{
			try
			{
				String sql="insert into admin.TEMPL (NUM,NAME) values(?,?)";
				PreparedStatement sss=sample.prepareStatement(sql);
				//
				String ppp=sole.getText();//獲取輸入的資料
				int blank=0;
				String num="";
				String name="";
				//String[] sub=ppp.split(" ");//這種正則表示式拆分空格的方法是錯誤的
				String[] sub=ppp.split("\\s+");//正確方法,\s表示任何空白字元,由於有\所以是 "\\s"
				if(sub.length>2) 
				{
					System.out.println("輸入不符合格式 重新輸入");
					return;
				}
				name=name+sub[1];	
				num=num+sub[0];
				int inNum=Integer.parseInt(num);//將數字字串轉化為整型
				sss.setInt(1, inNum);
				sss.setString(2, name);
				sss.executeUpdate();//更新操作在設定完變數的值之後,它是相當於
				//preparedstatement物件sss已經編譯好了,並且設定好了變數的值,然後這個時候才能用它去執行,否則會報sqlcode:07001錯誤
				String[] valu= {num,name};
				tableModel.addRow(valu);
				sample.commit();//必須要有提交操作!!!!!否則就算executeUpdate()了也沒有用
			}
			catch(Exception x)
			{
			          System.out.println(x.getMessage());
			}
			
		}//單行插入
		if(e.getSource()==putinDuo)
		{
		}//多行插入
		if(e.getSource()==putinDan)
		{
		}//子查詢插入
		
	}
	
	
	
}


相關推薦

DB2 親身例項GUI介面 筆記注意事項

import java.lang.*; import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.io.*; import java.sql.*; import java.ut

我所理解的Android模組化——常見問題注意事項

   關於Android模組化,前面已經寫了三篇文章,沒有了解的大家可以先去看一下,附上鍊接地址:   下面主要來說一下Android模組化過程中的常見問題和注意事項: 注意事項   記得在一篇技術部落格中看到微信Tinker的開發人員說過一句話

windows下磁碟相關介面呼叫例項持續更新

windows下磁碟相關介面呼叫例項 1、windows下獲取磁碟空間介面呼叫例項 //windows下獲取磁碟空間介面呼叫 void GetDiskSpaceTest(void) { /* qwFreeBytesToCaller

Matlab-GUIDE使用說明Matlab-GUI介面

  從簡單的例子說起吧。    建立MatlabGUI介面通常有兩種方式:    1,使用 .m 檔案直接動態新增控制元件      2.  使用 GUIDE 快速的生成GUI介面 顯然第二種視覺化編輯方法算更適合寫大型程式。 一:建立GUI 1.在 .m檔案中動態新增

結對項目-四則運算出題程序GUI

頁面 入參 inf 多層 深入 java 信息 算法實現 函數 目錄: 一.致搭檔(含項目地址) 二.PSP(planning) 三.結對編程中對接口的設計 四.計算模塊接口的設計與實現過程 五.計算模塊接口部分的性能改進 六.計算模塊部分單元測試展示 七.計算模塊部分異常

用戶登錄模塊進行必要的安全處理MD5加密、傳輸過程加密

sele clas 抓包 index.jsp sql語句 new 不存在 別人 com 1、首先簡談一下常規Web登錄模塊的開發(只為了實現簡單的登錄功能,未對數據庫字段進行加密處理以及傳輸過程中進行加密處理)   非安全性登錄模塊開發   使用JSP+MYSQL  

PHP規範PSR6Cache介面介紹

快取是提高任何專案效能的常用方法,使快取庫成為許多框架和庫的最常見功能之一。這導致許多庫推出自己的快取庫,具有各種級別的功能。這些差異導致開發人員必須學習多個系統,這些系統可能會也可能不會提供他們所需的功能。此外,快取庫本身的開發人員面臨著只支援有限數量的框架或建立大量介面卡類的選擇。 快取系統的通

PHP規範PSR3日誌介面介紹

本文件描述了用於記錄庫的通用介面。 主要目標是允許庫以簡單和通用的方式接收Psr \ Log \ LoggerInterface物件並將日誌寫入其中。具有自定義需求的框架和CMS可以擴充套件介面以用於它們自己的目的,但是應該保持與該文件的相容性。這可確保應用程式使用的第三方庫可以寫入集中式應用程

Linux 抓取網頁例項shell+awk

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

java中介面interface及使用方法注意事項

1、介面:一種把類抽象的更徹底,接口裡只能包含抽象方法的“特殊類”。介面不關心類的內部狀態資料,定義的是一批類所遵守的規範。(它只規定這批類裡必須提供某些方法,提供這些方法就可以滿足實際要求)。 在JAVA程式語言中是一個抽象型別,是抽象方法的集合,介面通常以interface來宣告。一個類通過

第三章棧作業題2-棧及其應用-計算機17級 6-1 爆記憶體函式例項 6 分

6-1 爆記憶體函式例項 (6 分) 本題要求實現一個遞迴函式,使用者傳入非負整型引數n,使用者依次輸出1到n之間的整數。所謂遞迴函式就是指自己呼叫自己的函式。 說明: (1)遞迴函式求解問題的基本思想是把一個大規模問題的求解歸結為一個相對較小規模問題的求解, 小規模

hadop 檢視DataNode的資源使用情況資訊web介面

文章目錄 1.概述 2. 配置 3. 例項 1.概述 2. 配置 3. 例項 自己搭建一個hadoop本地集群后,訪問 http://localhost:8088/ws/v1/cluster/metrics <?x

smsService介面dubbo介面

package com.lakala.crosspay.jmeter.client.integration; import com.lakala.crosspay.sms.api.SmsService; import com.lakala.crosspay.sms.api.dto.SmsDTO; im

Python3.7之100個例項未完

打了一個月CTF,發覺自己的程式設計能力太弱。最近重新開始學Python,堅持每天寫幾個例項,順便記錄一下。 目錄 題目1 :三位數計算 題目2:獎金計算 題目3:完全平方數 題目4:一年中的第幾天 題目5:三數排序 題目6:斐波拉契數列

第一個關於控制元件的例項對話方塊

1.先設定背景聊天檔案的圖片 資源管理器中找到安裝檔案下的tools->draw9patch.bat的檔案,雙擊可以執行,在裡面開啟將背景圖片加入編輯,並儲存替換原來的圖片 2.設定依賴庫 在app/build.gradle中新增依賴庫(目的為了使用recyclerview這個控制元件) dep

王權富貴:faster_rcnn在Linux伺服器上介面編譯

環境: CPU: I7 GPU: GTX1070        計算能力: 6.1      裝置ID: 0 參考: https://blog.csdn.net/hitzijiyingcai/article/det

hdfs客戶端例項kerberos+simple

1.非安全模式 在非安全模式下,訪問hdfs檔案系統的客戶端程式碼如下: package ntci.hadoop.hdfs.test; import org.apache.hadoop.classification.InterfaceAudience; import org.apache.h

java點外賣系統介面

把這幾天學的做一個綜合性應用,做了一個小型訂餐的系統,用到了面向物件的思想、靜態的特性、集合框架中的ArrayList和HashMap對物件的儲存以及操作、異常處理。 專案總共包含四個檔案,分別是選單類、訂單類、操作類、Main 選單資訊儲存與操作 /** * Create

mybatis 詳解------入門例項基於註解

目錄 1、建立MySQL資料庫:mybatisDemo和表:user 2、建立一個Java工程,並匯入相應的jar包,具體目錄如下 3、在 MyBatisTest 工程中新增資料庫配置檔案 mybatis-configuration.xml 4、定義表所對應的實體

js 模糊查詢 360介面

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script src="https://code.j