五月开心播播网_国内精品伊人久久久久影院对白_亚洲精品高清视频_国产精品激情_68精品久久久久久欧美_四虎免费av_97精品在线视频_欧美知名女优

您的位置:首頁技術文章
文章詳情頁

Mysql入門系列:MYSQL圖像數據的處理

瀏覽:24日期:2023-11-30 17:57:21
; ; 6.8 其他主題 ; 本節(jié)包括幾個主題,這些主題不完全適合于本章從client1到client5 的開發(fā)中的任一小節(jié)的內容: ; ■ 在使用結果集元數據幫助驗證這些數據適合于計算之后,使用結果集數據計算結果。 ; ■ 如何處理很難插入到查詢中的數據。 ; ■ 如何處理圖形數據。 ; ■ 如何獲得表結構的信息。 ; ■ 常見的MySQL程序設計錯誤及如何避免。 ; 6.8.1在結果集上執(zhí)行計算 ; 迄今為止,我們集中而主要地使用了結果集元數據來打印行數據,但很明顯,除打印之外,還有需要使用數據做其他事情的時候。例如,計算基于數據值的統(tǒng)計信息,應用元數據確保數據適合它們要滿足的需求。哪種類型的需求?對于啟動程序來說,可能要校驗一下正要執(zhí)行數字計算的列實際上是否包含著數字! ; 下面的列表顯示了一個簡單函數summary _ stats ( ) ,它獲取結果集和列索引,并產生列值的匯總統(tǒng)計。該函數還列出缺少數值的數量,它是通過檢查NULL 來檢測的。這些計算包括兩個數據所必須滿足的需求, summary_stats() 用結果集元數據來校驗: ; ■ 指定的列必須存在(也就是說,列索引必須在結果集列值的范圍內)。 ; ■ 此列必須包括數字值。 ; 如果這些條件不滿足,則summary_stats() 只打印出錯誤消息并返回。代碼如下:Mysql入門系列:MYSQL圖像數據的處理Mysql入門系列:MYSQL圖像數據的處理Mysql入門系列:MYSQL圖像數據的處理 請注意在mysql_fetch_row() 循環(huán)前面調用的mysql_ data _ seek( )。為獲得同樣的結果集,它允許多次調用summary _ stats()(假設要計算幾列的統(tǒng)計值的話)。每次調用summary _ stats( )都要“重新回到”到結果集的開始(這里假設mysql_store_result() 創(chuàng)建結果集,如果用mysql_use_result() 創(chuàng)建結果集就只能按順序處理行,而且只能處理一次)。summary_stats() 是個相對簡單的函數,但它給我們一個提示,就是如何編寫一個比較復雜的計算程序,如兩個列的最小二乘回歸或者標準統(tǒng)計,如t -檢驗。 ; 6.8.2 對查詢中有疑問的數據進行編碼 ; 包括引號、空值和反斜線的數據值,如果把它們插入到查詢中,在執(zhí)行查詢時就會產生一些問題。下面的討論論述了這些難點,并介紹了解決的辦法。假設要建造一個SELECT 查詢,它基于由name 指向的空終結串的內容:Mysql入門系列:MYSQL圖像數據的處理  如果name 的值類似于“0’Malley, Brian”,這時進行的查詢就是非法的,因為引號在引用的字符串里出現:Mysql入門系列:MYSQL圖像數據的處理 需要特別注意這個引號,以便使服務器不將它解釋為name 的結尾。一種方法是在字符串內使用雙引號,這就是ANSI SQL 約定。SQL 支持這個約定,也允許引號在反斜線后使用:Mysql入門系列:MYSQL圖像數據的處理 另一個有問題之處是查詢中任意二進制數據的使用,例如,在把圖形存儲到數據庫這樣的應用程序中會發(fā)生這種情況。因為二進制數值含有一些字符,把它放到查詢中是不安全的。為了解決這個問題,可使用mysql_ escape _ string( ),它可以對特殊字符進行編碼,使其在引用的字符串中可以使用。mysql_escape_string() 認為的特殊字符是指空字符、單引號、雙引號、反斜線、換行符、回車符和C ontrol - Z(最后一個在Windows 語言環(huán)境中出現)。什么時候使用mysql_escape_string() 呢?最保險的回答是“始終”。然而,如果確信數據的形式并且知道它是正確的—可能因為預先執(zhí)行了確認檢查—就不必編碼了。例如,如果處理電話號碼的字符串,它完全由數字和短線組成,那么就不必調用mysql_ escape _ string( )了,否則還是要調用。 ; mysql_escape_string() 對有問題的字符進行編碼是將它們轉換為以反斜線開頭的2個字符的序列。例如,空字符轉換為‘ 0’,這里的0 是可打印的ASCII 碼0,而不是空。反斜線、單引號和雙引號分別轉換為‘ ’、‘’’和‘”’。調用mysql_escape_string() 的過程如下:Mysql入門系列:MYSQL圖像數據的處理 mysql_escape_string() 對from_str 進行編碼,并把結果寫入to _ str中,還添加了空終結值,這樣很方便,因為可以利用像strcpy() 和strlen() 這樣的函數使用該結果串。from_str 指向包括將要編碼的字符串的char 緩沖區(qū),這個字符串可能包含任何內容,其中包括二進制數據。to_str 指向一個存在的char 緩沖區(qū),在這個緩沖區(qū)里,可以寫入編碼的字符串;不要傳遞未初始化的指針或NULL 指針,希望由mysql_escape_string() 分配空間。由to_str 指向的緩沖區(qū)的長度至少是(from_len*2)+1個字節(jié)(很可能from_str 中的每個字符都需要用2 個字符來編碼;額外的字節(jié)是空終結值)。 ; from_len 和to_len 都是unsigned int 值,from_len 表示from_str 中數據的長度;提供這個長度是非常必要的,因為from_str 可能包含空值字節(jié),不能把它當作空終結串。從mysql_escape_string() 返回的to_len 值是作為結果的編碼字符串的實際長度,沒有對空終結值進行計數。 ; 當mysql_escape_string() 返回時, to _ str中編碼的結果就可看作是空終結串,因為from_str 中的空值都被編碼為‘ 0’。為了重新編寫構造SELECT 的代碼,使名稱的值即使包含引號也能工作,我們進行下面的操作:Mysql入門系列:MYSQL圖像數據的處理6.8.3 圖像數據的處理mysql_escape_string() 的基本功能之一就是把圖像數據加載到一個表中。本節(jié)介紹如何進行這項工作(這個討論也適用于二進制數據的其他形式)。假設想從文件中讀取圖像,并將它們連同唯一的標識符存儲到表中。BLOB 類型對二進制數據來講是個很好的選擇,因此可以使用下面的表說明:Mysql入門系列:MYSQL圖像數據的處理 實際上,要想從文件中獲取圖像并放入images 表,利用下面的函數load_image() 可以實現,給出一個標識符號碼和一個指向包括這個圖像數據的打開文件的指針:Mysql入門系列:MYSQL圖像數據的處理load_image() 不會分配非常大的查詢緩沖區(qū)( 10 0 K),因此它只能處理相對較小的圖形。 ; 在實際的應用程序中,可以根據圖形文件的大小動態(tài)地分配緩沖區(qū)。處理從數據庫中恢復的圖形數據(或任何二進制數據)并不像開始把它放入時那樣問題重重,因為在變量MYSQL_ROW 中數據值的原始形式是有效的,通過調用mysql_ fetch _length ( ),這個長度也是有效的。必須將值看作是計數串,而不是空終結串。 ; 6.8.4 獲取表信息 ; MySQL允許使用下面的查詢獲取有關表結構的信息(下面兩者是等價的):Mysql入門系列:MYSQL圖像數據的處理 與SELECT 相類似,兩個語句都返回結果集。為了在表中找出有關列,所需做的就是處理結果集中的行,從中獲取有用的信息。例如,如果從mysql客戶機上發(fā)布DESCRIBE images 語句,就會返回這樣的信息:Mysql入門系列:MYSQL圖像數據的處理  ; 如果從自己的客戶機上執(zhí)行同樣的查詢,可以得到相同的信息(沒有邊框)。如果只想要單個列的信息,則使用如下這個查詢:  ; SHOW FIELDS FROM tbl _ name LIKE “col _ name”  ; 此查詢會返回相同的列,但只是一行(如果列不存在就不返回行)。  ; 6.8.5 需要避免的客戶機程序設計錯誤  ; 本節(jié)討論一些常見的MySQLC API 程序設計錯誤,以及如何避免其發(fā)生(這些問題在MySQL郵件清單中會周期性地突然出現)。  ; 1. 錯誤1——使用未初始化的連接處理程序指針在本章的樣例中,我們已經通過傳遞NULL 參數調用了mysql_ i n i t ( ),這就是讓它分配并且初始化MYSQL 結構,然后返回一個指針。另外一種方法是將指針傳遞到一個已有的MYSQL 結構中。在這種情況下, mysql_init() 會將結構初始化并返回一個指針,而不必自己分配結構。如果要使用第二種方法,則要小心會出現一些微妙的問題。下面的討論指出了需要注意的一些問題。如果將一個指針傳遞給mysql_ init( ),它應該實際指向某些東西。看下面的代碼段:Mysql入門系列:MYSQL圖像數據的處理 這個問題是,mysql_init() 得到了一個指針,但指針沒有指向所知的任何地方。conn 是一個局部變量,因此在main() 開始執(zhí)行時它是一個能指向任何地方的未初始化的存儲器,這就是說mysql_init() 將使用指針,并可在內存的一些任意區(qū)域濫寫。如果幸運的話, conn 將指向您的程序地址空間的外部,這樣,系統(tǒng)將立即終止,使您能盡早意識到代碼中出現的問題。 ; 如果不幸的話, conn 將指向程序中以后才使用的一些數據的內部,直到再次使用那個數據時才發(fā)現問題。因此實際出現問題的地方遠比執(zhí)行程序時出現的問題多,也更難捕捉到。下面是一段有問題的代碼:Mysql入門系列:MYSQL圖像數據的處理  ; 此時, conn 是一個全局變量,因此在程序啟動前,將它初始化為0(就是NULL)。mysql_init() 遇到NULL 參數,因此初始化并分配一個新的連接處理程序。只要將conn 傳遞給需要非NULL 連接處理程序的MySQLCAPI 函數,系統(tǒng)就會崩潰。這些代碼段的修改就是確保conn 有一個可知的值。例如,可以將它初始化到已經分配的MYSQL 結構地址中去:Mysql入門系列:MYSQL圖像數據的處理 然而,推薦的(較容易的!)解決方案僅僅是將NULL 顯式地傳遞給mysql_ init( ),讓該函數分配MYSQL 結構,并將返回值賦值給conn:Mysql入門系列:MYSQL圖像數據的處理 無論如何不要忘記檢驗mysql_init() 的返回值,以確保它不是NULL。 ; 2. 錯誤2——有效結果集檢驗的失敗 ; 請記住檢查希望得到的結果集的調用狀態(tài)。下面的代碼沒有做到這一點:Mysql入門系列:MYSQL圖像數據的處理 不幸地是,如果mysql_store_result() 失敗,res_set 為NULL,while 循環(huán)也不執(zhí)行了,應測試返回結果集函數的返回值,以確保實際上在進行工作。 ; 3. 錯誤3—— NULL 列值引起的失敗 ; 不要忘記檢查mysql_fetch_row() 返回的數組MYSQL_ROW 中列值是否為NULL 指針。如果row[i] 為NULL,則在一些機器上,下面的代碼就會引起崩潰:Mysql入門系列:MYSQL圖像數據的處理 該錯誤危害最大的部分是,有些printf() 的版本很寬容地對NULL指針輸出了“( null )”,這就使錯誤很容易逃脫而沒有把錯誤定位。如果把程序給了朋友,而他只有不太寬容printf( )版本,程序就會崩潰,您的朋友會認為您是個無用的程序員。循環(huán)應該寫成下面這樣:Mysql入門系列:MYSQL圖像數據的處理 不需要檢查列值是否為NULL 的惟一一次是當已經從列信息結構確定IS _ NOT _ NULL( )為真時。 ; 4. 錯誤4——傳遞無意義的結果緩沖區(qū) ; 需要您提供緩沖區(qū)的客戶機庫函數通常要使這些緩沖區(qū)真正存在,下面的代碼違反了這個規(guī)則:Mysql入門系列:MYSQL圖像數據的處理 問題是什么呢?to_str 必須指向一個存在的緩沖區(qū),而在這個樣例中沒有,因此,它指向了隨意的位置。不要向mysql_escape_string 傳遞無意義的指針作為to_str 參數,否則它會恣意踐踏內存。
標簽: MySQL 數據庫
日韩福利在线播放| 日韩av最新在线观看| 亚洲国产日韩av| 日韩一级精品视频在线观看| 久久精品人成| 免费在线不卡av| 欧美韩国一区| 日韩三级影视基地| 一级做a爱片久久毛片| 日韩中文字幕观看| 久久视频国产| 久久欧美在线电影| 清清草免费视频| 欧美亚洲愉拍一区二区| 成人免费看片98| 高清电影一区| 欧美一区二区三区在线电影| 日本免费高清一区| 伊人22222| tube8在线hd| 中文字幕亚洲一区二区av在线| 国产精品美女www| 日日夜夜天天操| 免费精品视频在线| 日韩中文字幕一区二区| 最新中文字幕在线| 亚洲一区二区三区免费| 国产一区二区三区高清在线观看| 亚洲s码欧洲m码国产av| 国产精品一区免费在线观看| 男人的天堂99| 91嫩草精品| 成人女人免费毛片| 欧美午夜性囗交xxxx| 久久不见久久见中文字幕免费| 日日骚久久av| 无码人妻一区二区三区免费n鬼沢| 日日干夜夜爽| 欧美激情综合五月色丁香 | 中文字幕在线视频播放| 毛片无码国产| 极品美女销魂一区二区三区免费 | 波多野结衣理论片| 亚洲一区中文日韩| 精品国产va久久久久久久| 精品久久香蕉国产线看观看gif| 国产 欧美 在线| 欧美在线影院| 成人深夜直播免费观看| 少妇无码一区二区三区| 国产成人一区二区三区影院| 久久九九有精品国产23| www.久久精品.com| 欧美一卡在线观看| 性感美女福利视频| 国产精品入口麻豆九色| 九色91在线视频| 中文有码在线| 亚洲美女一区二区三区| 亚洲国产精一区二区三区性色| 中文字幕一区二区三区在线播放| 欧美视频久久久| 亚洲高清一二三区| 好男人看片在线观看免费观看国语 | 奇米4444一区二区三区| 中文无码精品一区二区三区| 国产精品资源| 国产成人精品av久久| 黄色另类av| 欧美中日韩在线| 白浆在线视频| 91精品一区二区三区在线观看| 网站在线观看你懂的| 亚洲三级小视频| 国产一级片久久| 精品视频网站| 国产精品theporn88| 国产一区二区三区美女秒播| 亚洲一区中文| 日韩a级黄色片| 亚洲成人看片| 无码精品国产一区二区三区免费| 日韩成人一区| 日韩成人在线资源| 欧美一级片免费| 色婷婷综合久色| h视频在线观看免费完整版| 一区二区在线免费视频| 天堂成人av| 91色视频在线导航| 国产性一级片| 色综合久久精品| 激情四射综合网| 韩国精品视频在线观看| 国产高清自拍一区| 亚洲成人短视频| 日本一二三四区视频| 在线一区免费| 我家有个日本女人| 色诱色偷偷久久综合| 性欧美18一19内谢| 在线日韩成人| www.日本在线视频| 99久久久国产精品免费蜜臀| eeuss影院130020部| 久久免费一区| 国产精品 欧美精品| 精品一成人岛国片在线观看| 欧美视频专区一二在线观看| 亚洲欧洲精品视频| 欧美一级国产精品| 天天撸夜夜操| 色婷婷激情综合| 四虎成人精品在永久在线观看| 国产精品伦理一区二区| 欧洲一级毛片| 日韩欧美99| 国产aa精品| 成人精品999| 亚洲色图15p| 国产成人精品自线拍| 国产小视频91| 国产区视频在线| 日韩av在线播放不卡| 国产在线观看91一区二区三区| 男人日女人的bb| 国产精品99一区二区| 久久综合色综合| 亚洲一区二区欧美| 先锋av资源站| 欧美网站一区二区| 欧美少妇bbw| 亚洲国产精品成人久久综合一区| 深爱五月综合网| ww亚洲ww在线观看国产| 成人高清在线观看免费| 免费av网址在线| 在线高清一区| 五月天综合激情网| 成人视屏免费看| 亚洲精品成av人片天堂无码 | 亚洲高潮无码久久| 欧美大胆成人| 少妇人妻无码专区视频| 天堂俺去俺来也www久久婷婷| 国产精品pans私拍| 日本久久一区| 女同性恋一区二区三区| 老牛影视av一区二区在线观看| 精品成人av一区二区三区| 一区二区在线电影| 色视频免费在线观看| 日本黄大片在线观看| 欧美体内she精视频在线观看| 少妇av在线播放| 久久99久久99精品蜜柚传媒| 久久亚洲精华国产精华液| 操喷在线视频| 亚洲一区中文字幕在线观看| 天天做天天爱天天综合网2021| 黄瓜视频污在线观看| 亚洲色图视频网| 91短视频推广| 日本久久久久久久久久久| 精品嫩草影院| 国产精品111| 久久av.com| 91久久夜色精品国产按摩| 91精品国产综合久| 国产一区二区精品免费| 国产69精品久久久久毛片| av午夜电影| 人妻有码中文字幕| 精品国产亚洲一区二区三区在线观看| 欧美国产小视频| 国产激情三区| 国产精品国产三级国产专业不| 精品视频久久久| 久久aimee| 中文字幕在线免费看线人| 在线免费亚洲电影| 色偷偷偷在线视频播放| 成人在线观看你懂的| 亚洲欧美日韩在线播放| 2019中文字幕在线电影免费| 欧美国产在线看| 国产99久久精品一区二区永久免费 | 波多野结衣在线观看视频| 自拍亚洲一区欧美另类| 欧美天天综合| 香蕉视频在线视频| 无码av天堂一区二区三区| 国产日韩欧美精品电影三级在线| 亚洲精品天堂在线观看| 国产精成人品localhost| 日韩高清在线观看| 三年片免费观看大全| 亚洲精品无码久久久久久| 精品污污网站免费看| 国内成+人亚洲+欧美+综合在线|