今天寫(xiě)一個(gè)mysql存儲(chǔ)過(guò)程,根據(jù)自己的需求要遍歷一個(gè)數(shù)據(jù)表,因?yàn)閷?duì)存儲(chǔ)過(guò)程用的不多,語(yǔ)法不甚熟悉,加之存儲(chǔ)過(guò)程沒(méi)有調(diào)試環(huán)境,花了不少時(shí)間才慢慢弄好,故留個(gè)痕跡。
1 BEGIN
2 DECLARE Done INT DEFAULT 0;
3
4 DECLARE CurrentLingQi INT;
5
6 DECLARE ShizuName VARCHAR(30);
7 /* 聲明游標(biāo) */
8 DECLARE rs CURSOR FOR SELECT NodeName, LingQi FROM socialrelation;
9 /* 異常處理 */
10 DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET Done = 1;
11
12 /* 打開(kāi)游標(biāo) */
13 OPEN rs;
14
15 /* 逐個(gè)取出當(dāng)前記錄LingQi字段的值,需要進(jìn)行最大值的判斷 */
16 FETCH NEXT FROM rs INTO ShizuName, CurrentLingQi;
17 /* 遍歷數(shù)據(jù)表 */
18 REPEAT
19 IF NOT Done THEN
20 SET CurrentLingQi = CurrentLingQi + 60;
21 /* 如果更新后靈氣值大于允許的最大值,則就設(shè)置為最大值 */
22 IF CurrentLingQi >= 1800 THEN
23 UPDATE socialrelation SET LingQi = 1800 WHERE NodeName = ShizuName;
24 ELSE
25 /* 否則,正常更新 */
26 UPDATE socialrelation SET LingQi = LingQi + 60 WHERE NodeName = ShizuName;
27 END IF;
28 END IF;
29
30 FETCH NEXT FROM rs INTO ShizuName, CurrentLingQi;
31
32 UNTIL Done END REPEAT;
33
34 /* 關(guān)閉游標(biāo) */
35 CLOSE rs;
36 END
CxImage是什么
CxImage是C++實(shí)現(xiàn)的功能強(qiáng)大的、能處理多種文件格式的圖像管理類。它能夠簡(jiǎn)單快速的實(shí)現(xiàn)圖像的導(dǎo)入、保存、顯示和變換。
為什么使用CxImage
u 它是平臺(tái)無(wú)關(guān)的
u 它是自由軟件、免費(fèi)的、開(kāi)源的
u 支持多種平面格式:BMP、GIF、ICO、TGA、JPEG、PCX、PNG、TIFF、MNG、RAS等,還有更多!
u 功能強(qiáng)大:幾何變換、圖像處理、圖像格式轉(zhuǎn)換等。
u 使用簡(jiǎn)單:下面的入門教程會(huì)給你展示這一點(diǎn)。
CxImage的功能
Constructors 構(gòu)造函數(shù)
Initialization 初始化
File 文件操作,主要是編解碼
Generic 圖像基本變化
DSP 圖像處理操作
Painting 繪圖操作
Multiple Images 多幀圖像操作
Transparency 透明層操作
Palette 調(diào)色板操作
Pixels 像素操作
Region Selection 區(qū)域選擇操作
Alpha Channel Alpha通道操作
Layers 圖像層操作
Attributes 圖像屬性操作
Miscellaneous 雜項(xiàng)
呵呵,夠強(qiáng)大吧!一個(gè)類庫(kù)再好,不能為我們所用,則一切都是空談,怎么用,請(qǐng)看詳細(xì)步驟:
CxImage使用入門
1. 去
這里:http://www.codeproject.com/KB/graphics/cximage.aspx,下載CxImage的源代碼。在
codeproject沒(méi)有賬戶的兄弟姐妹需要先注冊(cè)一個(gè)哦,非常簡(jiǎn)單,幾秒鐘就可以了!該頁(yè)面上有兩個(gè)可以下載的東東,一個(gè)是CxImage的源代碼,
另一個(gè)是用CxImage類庫(kù)開(kāi)發(fā)的一個(gè)完整的Demo,你可以看一下這個(gè)Demo,就知道它的功能有多強(qiáng)大了!
2. 編譯CxImage。解壓源碼包,在解壓后的目錄下有一個(gè)CxImageLib.dsw工作空間文件,使用VC++ 6.0 打開(kāi)該工作空間文件。做以下事情:
① Project->Settings->C/C++,
在Category下拉列表中選擇Code Generation,將Use rum-time libary中選擇MultiThread DLL.在
Category下拉列表中選擇 Precompiled Headers中,選擇第一
項(xiàng): Not using Precompiled headers.
② Build->Batch Build->勾選你要編譯的版本庫(kù)。默認(rèn)情況下是每個(gè)庫(kù)都有四個(gè)版本,分別是Debug、Release、Unicode Debug、Unicode Release.選擇你想要編譯的版本即可。
③ 等待幾分鐘,即可編譯好。
④ 新建立一個(gè)文件夾,如mycximage。在該文件夾下新建一個(gè)header文件夾和一個(gè)lib文件夾。將CxImage下的所有頭文件都拷貝到header文件夾下,將剛才所有生成的lib文件拷貝到lib文件夾下。至此,你已經(jīng)擁有了CxImage類庫(kù)。
⑤ 打開(kāi)VC++6.0,新建立一個(gè)基于對(duì)話框的MFC應(yīng)用程序,叫Test。我們來(lái)完成一個(gè)將BMP位圖轉(zhuǎn)換成JPEG格式的小程序。在對(duì)話框上畫(huà)一個(gè)按鈕,雙擊按鈕,響應(yīng)事件函數(shù)。
⑥ 將剛才我們建立好的mycximage文件夾拷貝到你的工程目錄下。在TestDlg.cpp文件頂部,加入以下代碼:
#include ”mycximage/header/ximage.h”
#pragma comment(lib, ”mycximage/lib/png.lib”)
#pragma comment(lib, ”mycximage/lib/libdcr.lib”)
#pragma comment(lib, ”mycximage/lib/jpeg.lib”)
#pragma comment(lib, ”mycximage/lib/zlib.lib”)
#pragma comment(lib, ”mycximage/lib/tiff.lib”)
#pragma comment(lib, ”mycximage/lib/jasper.lib”)
#pragma comment(lib, ”mycximage/lib/cximage.lib”)
#pragma comment(lib, ”mycximage/lib/mng.lib”)
在你的事件響應(yīng)函數(shù)中添加一下代碼:
CxImage image;
CString strFileName; // 圖像文件名
CFileDialog dlg( TRUE, ”BMP”, NULL, OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY, ”所有圖像文件(*.*)|*.*|BMP圖像文件(*.BMP)|*.BMP|JPG格式圖像(*.JPG)|*.JPG||”);
dlg.DoModal();
// 獲取文件名
strFileName = dlg.GetFileName();
// 判斷文件名是否為空
if (strFileName.GetLength() == 0)
{
return;
}
// 加載BMP位圖
image.Load( strFileName.GetBuffer( strFileName.GetLength()), CXIMAGE_FORMAT_BMP );
// 判斷圖像是否有效
if (image.IsValid())
{
// 判斷圖像顏色數(shù)
if (!image.IsGrayScale())
image.IncreaseBpp( 24 );
// 設(shè)置Jpeg圖像的質(zhì)量
image.SetJpegQuality( 80 );
// 將位圖轉(zhuǎn)換成JPEG格式圖像
image.Save(”export.jpg”,CXIMAGE_FORMAT_JPG);
}
呵呵,看看效果吧!你已經(jīng)完成了將指定位圖轉(zhuǎn)換成JPEG格式的功能!就是這么簡(jiǎn)單!
后記
如果各位XDJM按照我的步驟一步一步來(lái),應(yīng)該是肯定可以成功的!
本文中所述的是在VC++ 6.0中完成。而對(duì)于編譯好的庫(kù),在VS2005中也是可以直接用的。如果上述同樣的代碼在VS2005中編譯不能通過(guò),你需要在工程屬性中將字符集設(shè)置為Not Set,編譯即可通過(guò)!
09年的最后一天!
晚上,互易中國(guó)的客服向我提醒說(shuō)我的域名到期,該續(xù)費(fèi)了,我說(shuō)不續(xù)了。打算以后就在CPP博客安家了。
回首09年,感慨很多。在09年的尾巴尖上,把博客建立起來(lái)。
迎接2010。