亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? blobtest.java

?? 瘋狂Java講義_源碼(含Java設(shè)計模式CHM
?? JAVA
字號:

import java.sql.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Properties;
import java.util.ArrayList;
import java.io.*;
import javax.swing.filechooser.FileFilter;

/**
 * Description:
 * <br/>Copyright (C), 2005-2008, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee kongyeeku@163.com
 * @version  1.0
 */
public class BlobTest
{
	JFrame jf = new JFrame("圖片管理程序");
	private static Connection conn;
	private static PreparedStatement insert;
	private static PreparedStatement query;
	private static PreparedStatement queryAll;

	//定義一個DefaultListModel對象
	private DefaultListModel imageModel = new DefaultListModel();
	private JList imageList = new JList(imageModel);
	private JTextField filePath = new JTextField(26);
	private JButton browserBn = new JButton("...");
	private JButton uploadBn = new JButton("上傳");
	private JLabel imageLabel = new JLabel();
	//以當(dāng)前路徑創(chuàng)建文件選擇器
	JFileChooser chooser = new JFileChooser(".");
	//創(chuàng)建文件過濾器
	ExtensionFileFilter filter = new ExtensionFileFilter();
	static
	{
		try
		{
			Properties props = new Properties();
			props.load(new FileInputStream("mysql.ini"));
			String driver = props.getProperty("driver");
			String url = props.getProperty("url");
			String user = props.getProperty("user");
			String pass = props.getProperty("pass");
			Class.forName(driver);
			//獲取數(shù)據(jù)庫連接
			conn = DriverManager.getConnection(url , user , pass);
			//創(chuàng)建執(zhí)行插入的PreparedStatement對象,該對象執(zhí)行插入后可以返回自動生成的主鍵
			insert = conn.prepareStatement("insert into img_table values(null,?,?)"
				, Statement.RETURN_GENERATED_KEYS);
			//創(chuàng)建兩個PreparedStatement對象,用于查詢指定圖片,查詢所有圖片
			query = conn.prepareStatement("select img_data from img_table where img_id=?");
			queryAll = conn.prepareStatement("select img_id,img_name from img_table");
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
	}

	public void init()throws SQLException
	{
		//-------初始化文件選擇器--------
		filter.addExtension("jpg");
		filter.addExtension("jpeg");
		filter.addExtension("gif");
		filter.addExtension("png");
		filter.setDescription("圖片文件(*.jpg,*.jpeg,*.gif,*.png)");
		chooser.addChoosableFileFilter(filter);
		//禁止“文件類型”下拉列表中顯示“所有文件”選項。
		chooser.setAcceptAllFileFilterUsed(false); 
		//---------初始化程序界面---------
		fillListModel();
		filePath.setEditable(false);
		//只能單選
		imageList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		JPanel jp = new JPanel();
		jp.add(filePath);
		jp.add(browserBn);
		browserBn.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent event)
			{
				//顯示文件對話框
				int result = chooser.showDialog(jf , "瀏覽圖片文件上傳");
				//如果用戶選擇了APPROVE(贊同)按鈕,即打開,保存及其等效按鈕
				if(result == JFileChooser.APPROVE_OPTION)
				{
					filePath.setText(chooser.getSelectedFile().getPath());
				}
			}
		});
		jp.add(uploadBn);
		uploadBn.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent avt)
			{
				//如果上傳文件的文本框有內(nèi)容
				if (filePath.getText().trim().length() > 0)
				{
					//將指定文件保存到數(shù)據(jù)庫
					upload(filePath.getText());
					//清空文本框內(nèi)容
					filePath.setText("");
				}
			}
		});
		JPanel left = new JPanel();
		left.setLayout(new BorderLayout());
		left.add(new JScrollPane(imageLabel) , BorderLayout.CENTER);
		left.add(jp , BorderLayout.SOUTH);
		jf.add(left);
		imageList.setFixedCellWidth(160); 
		jf.add(new JScrollPane(imageList) , BorderLayout.EAST);
		imageList.addMouseListener(new MouseAdapter()
		{
			public void mouseClicked(MouseEvent e)
			{
				//如果鼠標(biāo)雙擊
				if (e.getClickCount() >= 2)
				{
					//取出選中的List項
					ImageHolder cur = (ImageHolder)imageList.getSelectedValue();
					try
					{
						//顯示選中項對應(yīng)的Image
						showImage(cur.getId());
					}
					catch (SQLException sqle)
					{
						sqle.printStackTrace();
					}
				}
			}
		});
		jf.setSize(620, 400);
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		jf.setVisible(true);	
	}
	//----------查找img_table填充ListModel----------
	public void fillListModel()throws SQLException
	{
		ResultSet rs = null;
		try
		{
			//先清除所有元素
			imageModel.clear();
			//執(zhí)行查詢
			rs = queryAll.executeQuery();
			//把查詢的全部記錄添加到ListModel中
			while (rs.next())
			{
				imageModel.addElement(new ImageHolder(rs.getInt(1),
					rs.getString(2)));
			}
		}
		finally
		{
			if (rs != null)
			{
				rs.close();
			}
		}
	}
	//---------將指定圖片放入數(shù)據(jù)庫---------
	public void upload(String fileName)
	{
		InputStream is = null;
		try
		{
			//截取文件名
			String imageName = fileName.substring(
				fileName.lastIndexOf('\\') + 1 , fileName.lastIndexOf('.'));
			//設(shè)置圖片名參數(shù)
			insert.setString(1, imageName);
			File f = new File(fileName);
			is = new FileInputStream(f);
			//設(shè)置二進制流參數(shù)
			insert.setBinaryStream(2, is , (int)f.length());
			int affect = insert.executeUpdate();
			if (affect == 1)
			{
				//重新更新ListModel,將會讓JList顯示最新的圖片列表
				fillListModel();
			}
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			try
			{
				if (is != null)
				{
					is.close();
				}	
			}
			catch (Exception e)
			{
			}
		}
	}
	//---------根據(jù)圖片ID來顯示圖片----------
	public void showImage(int id)throws SQLException
	{
		ResultSet rs = null;
		try
		{
			//設(shè)置參數(shù)
			query.setInt(1, id);
			//執(zhí)行查詢
			rs = query.executeQuery();
			if (rs.next())
			{
				//取出Blob列
				Blob imgBlob = rs.getBlob(1);
				//取出Blob列里的數(shù)據(jù)
				ImageIcon icon = new ImageIcon(imgBlob.getBytes(1L , (int)imgBlob.length()));
				imageLabel.setIcon(icon);
			}
		}
		finally
		{
			if (rs != null)
			{
				rs.close();
			}
		}
	}

	public static void main(String[] args)throws SQLException
	{
		new BlobTest().init();
	}
}
//創(chuàng)建FileFilter的子類,用以實現(xiàn)文件過濾功能
class ExtensionFileFilter extends FileFilter
{

	private String description = "";
	private ArrayList<String> extensions = new ArrayList<String>();
	//自定義方法,用于添加文件擴展名
	public void addExtension(String extension)
	{
		if (!extension.startsWith("."))
		{
			extension = "." + extension;
			extensions.add(extension.toLowerCase());
		}
	}
	//用于設(shè)置該文件過濾器的描述文本
	public void setDescription(String aDescription)
	{
		description = aDescription;
	}
	//繼承FileFilter類必須實現(xiàn)的抽象方法,返回該文件過濾器的描述文本
	public String getDescription()
	{
		return description; 
	}
	//繼承FileFilter類必須實現(xiàn)的抽象方法,判斷該文件過濾器是否接受該文件
	public boolean accept(File f)
	{
		//如果該文件是路徑,接受該文件
		if (f.isDirectory()) return true;
		//將文件名轉(zhuǎn)為小寫(全部轉(zhuǎn)為小寫后比較,用于忽略文件名大小寫)
		String name = f.getName().toLowerCase();
		//遍歷所有可接受的擴展名,如果擴展名相同,該文件就可接受。
		for (String extension : extensions)
		{
			if (name.endsWith(extension)) 
			{
				return true;
			}
		}
		return false;
	}
}
//創(chuàng)建一個ImageHolder類,用于封裝圖片名、圖片ID
class ImageHolder
{
	//封裝圖片的ID
	private int id;
	//封裝圖片的圖片名字
	private String name;

	public ImageHolder()
	{
	}

	public ImageHolder(int id , String name)
	{
		this.id = id;
		this.name = name;
	}

	public void setId(int id)
	{
		this.id = id;
	}
	public int getId()
	{
		 return this.id;
	}

	public void setName(String name)
	{
		this.name = name;
	}
	public String getName()
	{
		 return this.name;
	}
	//重寫toString方法,返回圖片名
	public String toString()
	{
		return name;
	}
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区有码在线| 久久婷婷色综合| 激情久久五月天| 亚洲日本中文字幕区| 日韩欧美国产三级| 欧美影片第一页| 9久草视频在线视频精品| 裸体在线国模精品偷拍| 亚洲精品国产第一综合99久久 | 26uuu国产在线精品一区二区| 91精彩视频在线| 北条麻妃国产九九精品视频| 蜜桃精品在线观看| 午夜免费久久看| 亚洲自拍偷拍网站| 国产精品看片你懂得| 26uuu亚洲| 欧美一区二区三区性视频| 91丝袜美女网| 成人网在线播放| 国产精品一线二线三线| 美女视频黄频大全不卡视频在线播放| 亚洲国产日韩在线一区模特| 亚洲天堂成人网| 国产精品丝袜久久久久久app| 精品国产精品网麻豆系列| 欧美一区二区三区免费视频| 欧美视频日韩视频在线观看| 91色视频在线| 91女人视频在线观看| 成人黄色av电影| av在线播放不卡| 9人人澡人人爽人人精品| 成人午夜电影久久影院| 成人国产精品免费观看| 国产suv精品一区二区6| 国产成人在线视频网址| 国产成人在线视频网站| 国产成a人无v码亚洲福利| 国产精品综合在线视频| 国产麻豆精品theporn| 国产一区999| 国产精品一区二区三区四区| 国产成人在线视频网址| 成人深夜在线观看| 成人18视频日本| 91丝袜呻吟高潮美腿白嫩在线观看| 成人黄色777网| 色噜噜狠狠色综合中国| 91官网在线免费观看| 欧美色国产精品| 欧美一卡二卡三卡| 欧美成人乱码一区二区三区| 久久久蜜臀国产一区二区| 亚洲精品中文在线影院| 中文字幕在线不卡| 亚洲日本成人在线观看| 亚洲男同1069视频| 亚洲成av人影院| 青青草97国产精品免费观看无弹窗版| 人人爽香蕉精品| 狠狠色丁香婷综合久久| 不卡影院免费观看| 在线观看国产精品网站| 91麻豆精品91久久久久久清纯| 日韩欧美国产综合一区| 欧美激情在线看| 亚洲最新视频在线观看| 蜜桃久久av一区| 高清日韩电视剧大全免费| 一本色道久久综合亚洲91 | 亚洲伊人色欲综合网| 亚洲一区二区三区免费视频| 久久福利资源站| 日韩欧美不卡在线观看视频| 精品日韩欧美一区二区| 中文字幕电影一区| 亚洲一二三区在线观看| 麻豆精品精品国产自在97香蕉| 国产乱一区二区| bt7086福利一区国产| 91黄色免费版| 欧美一区二区三区思思人| 99久久精品免费看国产 | 婷婷六月综合亚洲| 麻豆91在线播放免费| 成人免费看的视频| 欧美日韩国产高清一区二区 | 欧美综合在线视频| 日韩欧美国产系列| 国产精品理伦片| 亚洲第一在线综合网站| 国产一区免费电影| 欧美亚洲禁片免费| 欧美喷水一区二区| 国产区在线观看成人精品| 中文一区二区在线观看| 日韩一区二区三区在线| 日韩免费视频线观看| 国产无一区二区| 亚洲综合视频在线观看| 黄一区二区三区| 色婷婷国产精品久久包臀| 日韩欧美精品在线视频| 亚洲在线成人精品| 国产主播一区二区| 欧美中文字幕一区二区三区亚洲| 日韩美女在线视频| 亚洲久草在线视频| 国内精品国产成人国产三级粉色 | 国产香蕉久久精品综合网| 色婷婷激情一区二区三区| 日韩 欧美一区二区三区| 亚洲mv在线观看| 国产精品一区二区三区乱码| 欧美日韩在线三级| 国产精品蜜臀av| 精品在线视频一区| 欧美亚洲一区二区在线| 国产精品久久久久久福利一牛影视| 日本不卡1234视频| 欧美日韩一区二区在线观看 | 亚洲精品免费在线观看| 极品少妇xxxx精品少妇偷拍| 欧美日韩高清一区| 中文字幕制服丝袜成人av| 精品一区二区久久| 欧美蜜桃一区二区三区| 国产午夜精品美女毛片视频| 国内国产精品久久| 日韩一区二区三区免费看 | 亚洲色图欧洲色图婷婷| 五月天视频一区| 在线视频一区二区三| 国产精品成人免费在线| 国产精品一线二线三线精华| 欧美一区二区三区在线看| 亚洲国产欧美日韩另类综合 | 欧美日韩国产高清一区| 欧美变态tickle挠乳网站| 亚洲欧美日韩国产手机在线| 国产经典欧美精品| 2019国产精品| 久久9热精品视频| 91精品国产欧美一区二区| 亚洲国产精品人人做人人爽| 99re热这里只有精品免费视频| 亚洲国产成人午夜在线一区| 精品一区二区三区久久| 欧美精品第1页| 亚洲国产精品一区二区www在线| 欧美色综合网站| 国产精品麻豆网站| 欧美精品在线观看播放| 亚洲精品中文字幕乱码三区| 极品美女销魂一区二区三区 | 欧美三级日韩三级国产三级| 亚洲精品亚洲人成人网| av爱爱亚洲一区| 一区二区三区在线免费视频| 91视视频在线观看入口直接观看www | 欧美不卡在线视频| 国产美女精品在线| 国产精品美女久久久久久久网站| eeuss影院一区二区三区| 欧美激情在线免费观看| 成人黄色电影在线| 亚洲免费在线播放| 欧美午夜在线一二页| 日韩精品一级二级| 欧美成人三级在线| 国产91精品在线观看| 亚洲午夜免费视频| 日韩精品在线一区二区| 国产成人亚洲综合a∨猫咪| 国产精品对白交换视频| 在线观看不卡视频| 99久久伊人精品| 日韩一区二区麻豆国产| 美女爽到高潮91| 中文字幕av不卡| 国产成人av电影免费在线观看| 国产欧美精品区一区二区三区 | 久久久久久久久久久99999| 成人av动漫网站| 亚洲成人激情综合网| 欧美sm极限捆绑bd| 99麻豆久久久国产精品免费 | 国产精品自在在线| 国产日韩欧美亚洲| 欧美高清视频不卡网| 国产真实乱对白精彩久久| 成人免费在线视频观看| 欧美电影影音先锋| 国产精品影音先锋| 亚洲成va人在线观看| 欧美精品一区二区三区蜜桃| 日本二三区不卡| 国产一区不卡在线| 亚洲一区二区三区不卡国产欧美|