aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 14805|回复: 5

如何更新SqlServer中Binary类型的字段?

[复制链接]

3

主题

8

回帖

97

积分

一级会员

积分
97
发表于 2014-1-22 14:45:06 | 显示全部楼层 |阅读模式
SqlServer

表名:txl
字段1 xm  类型  wchar
字段2 photo  类型 Binary
用以下代码可以更新,但是更新的内容不对,再读出来就不是那个图片了,是不是要指定类型?
麻烦大家了


  1. import win.ui;
  2. /*DSG{{*/
  3. var winform = ..win.form(text="aardio Form";right=599;bottom=399)
  4. winform.add(
  5. picturebox={cls="picturebox";left=66;top=46;right=259;bottom=307;z=1}
  6. )
  7. /*}}*/

  8. import com

  9. conn = com.CreateObject("ADODB.Connection")
  10. conn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;Data Source=192.168.1.1;Initial Catalog=txl;Persist Security Info=True;User ID=sa;Password=sa";
  11. conn.Open()

  12. rs = com.CreateObject("ADODB.RecordSet")
  13. rs.Open("SELECT photo from txl where xm ='123'", conn,3, 3)

  14. //这儿是不是有问题?
  15. rs(0).AppendChunk(string.load("C:\Documents and Settings\All Users\Documents\My Pictures\示例图片\Winter.jpg"))

  16. rs.update()
  17. rs.close();




  18. winform.show();
  19. win.loopMessage();

复制代码

5

主题

429

回帖

2420

积分

五级会员

积分
2420
发表于 2014-1-22 15:55:27 | 显示全部楼层
关键是使用string.loadBuffer函数返回二进制字节数组:

import access;

//创建数据库
var db = access("/testChunk.mdb")

//创建表
if(!db.existsTable("Chunks3") ){
        db.exec("CREATE TABLE Chunks3(ID integer identity NOT NULL, Photo IMAGE NULL)")
}

//参数化插入数据
var cmd = db.createCommand( "INSERT INTO Chunks3(Photo) VALUES(@Photo)" );  

//设置所有参数的值
cmd.bind(  
    //用string.loadBuffer 函数返回二进制字节数组。
    Photo = string.loadBuffer( "~\codes\范例程序\D) 图形图像\.gdip.jpg" );
)

//执行命令
cmd.Execute()

import gdip;
for(rs,fields in db.each("SELECT * FROM Chunks3") ){
    var bin = rs("Photo").value; //读取二进制数据
    if(bin){
        var hdc = ::GetDC(0);
        gdip.graphics( hdc ).drawImage( gdip.image(bin) ); //画到屏幕上看看
        ::ReleaseDC(0,hdc);
        
        break;
    }
}
  
//关闭数据库连接
db.close();

9

主题

68

回帖

1001

积分

荣誉会员

积分
1001
发表于 2014-1-26 00:55:43 | 显示全部楼层
神码 发表于 2014-1-22 15:55
提问题尽可能首先整理一个能运行的代码,即能节省别人再现分析问题的时间,也有助于你自己理清问题。

这 ...

看了神码的代码,终于明白怎么从SQL Server数据库中读取二进制文件了,测试成功,特来感谢。

0

主题

11

回帖

83

积分

一级会员

积分
83
发表于 2015-10-17 06:46:28 | 显示全部楼层
神码 发表于 2014-1-22 15:55
提问题尽可能首先整理一个能运行的代码,即能节省别人再现分析问题的时间,也有助于你自己理清问题。

这 ...

明白读取二进制文件了

6

主题

51

回帖

574

积分

三级会员

积分
574
发表于 2016-12-31 07:32:27 | 显示全部楼层
学习了,多谢楼上

1

主题

10

回帖

142

积分

一级会员

积分
142
发表于 2018-7-27 08:50:35 | 显示全部楼层
学些了,多谢楼上.......................
学些了,多谢楼上.......................
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|aardio.com|aardio 官方社区 ( 皖ICP备09012014号 )

GMT+8, 2025-2-10 17:35 , Processed in 0.099571 second(s), 22 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表