AU3能将图片转二进制写到数据库吗[已解决]
本帖最后由 qq82015930 于 2011-7-24 21:08 编辑AU3能将图片转二进制写到数据库吗
能的话给个转换和读取的列子,谢谢!
唉!转换到图片始终是空白 同求.....哈哈!期待高手解答 目前所知,au3可以把十六进制转化为图像输出,反过来操作不知道如何整 AU3 不会不行哟。C++VB 都行拉。相信AU3能做到的。只是还没高手发现. 纠结啊~~~~~!期待期待!!!!!!!!!! 本帖最后由 tubaba 于 2011-7-18 16:51 编辑
肯定是可以的,只要数据库字段大小足够储存这些信息,sql不知道text类型最多可以放多少个字符,可能是6万5千左右,我试过将粘贴到richedit的文件用_GUICtrlRichEdit_StreamToVar生成数据流再放入数据库,没有问题,可以重新提取到richedit内 可以ㄚ@@我已經可以做到了 本帖最后由 kk_lee69 于 2011-7-18 22:03 编辑
重點是資料庫版本 跟語法而已.................以下用 SQL 2000 為例子這個是比較複雜的....聽說SQL 2000以上的資料庫 有更方便的方法
第一種新增的方式......P.S 資料庫裡面的資料表為二進制格式的資料表欄位$hHandle = FileOpen("c:\123.jpg",16)
$fRead = Binary(FileRead($hHandle))
$conn.Execute("insert into comPicture (picID,picType,picName,Picture,Memo,Refcount,Step,JustSize) values ('123',1,'123.jpg',"&$fRead&",'自動轉入程式新增',0,-1,1)");插入一條紀錄注意上面 $fRead這個變數的地方..................用這樣的方式就可以用下面的語法直接寫入.......二進位的資料欄
可是..........如果原本的那個位置是屬於已經有存過照片的.....是屬於更新的.....就不能用上面的方法.....要用下面的語法才能更新$hHandle = FileOpen($jpgin&$RS.Fields (0).value&".jpg",16)
$fRead = Binary(FileRead($hHandle))
$conn.Execute("DECLARE @ptrval binary(16) SELECT @ptrval=TEXTPTR(Picture)FROM comPictureWHERE PicID='123'UPDATETEXT comPicture.Picture @ptrval 0 NULL "&$fRead)這段程式是我寫給正航系統 T357 ERP 用的有實測過........
PS 上面的範例 可能必須貼到 編輯器 去看會比較清楚....因為裡面我帶了很多 從資料表比對的資料 $RS.Fields (0).value這樣的東西 都是我從其他資料表比對出來要更新的值.......有關圖片的 主要是 $fRead 這個變數
P.S2 我修正一下好了....這樣會比較清楚點吧 本帖最后由 happytc 于 2011-7-19 02:14 编辑
难道不是简单地:
#include <SQLite.au3>
Local $hImage, $fData, $hFileName, $sData, $hImageQuery, $hImageRow
_SQLite_Startup (@ScriptDir & "\sqlite3.dll")
_SQLite_Open(@ScriptDir & "\image.db")
_SQLite_Exec(-1,"CREATE TABLE IF NOT EXISTS Test (data blob);")
$hImage = FileOpen(@ScriptDir & "\LiveCapture.ico", 16)
$fData = FileRead($hImage)
$sData = _SQLite_Encode($fData)
MsgBox(0, 0, $fData)
_SQLite_Exec(-1,"INSERT INTO Test VALUES (" & $sData & ");")
_SQLite_Query(-1,"SELECT data FROM Test WHERE rowid=1;", $hImageQuery)
_SQLite_FetchData($hImageQuery, $hImageRow, 1)
MsgBox(0, 0, Hex($hImageRow))
_SQLite_QueryFinalize ($hImageQuery)
$hFileName = FileOpen(@ScriptDir & "\imageDB.gif", 2)
FileWrite($hFileName, $hImageRow)
_SQLite_Close()
_SQLite_Shutdown()
回复 8# kk_lee69
前辈,你只说明写入数据库如何写,那读出来呢?从数据库中取出,并转为图片文件如何操作?? 回复 10# z761003
讀出來應該不困難吧.....因為這樣的圖片 通常是以 二進制存在資料庫裡面.....
用SQL 直接讀取.....然後再AU3 另存檔案附檔名是JPG 這樣就可以看到呀 还是不太明白,如果读出能来点原码研究下就好了 折腾了半天,读出的图片无法显示,请赐教 http://www.autoitx.com/forum.php?mod=viewthread&tid=19253&highlight=sql%2B%CD%BC%C6%AC 回复 14# yeqing880
谢谢,研究下
页:
[1]
2