永发信息网

现有一个sql数据库表如何读取二进制内容

答案:3  悬赏:10  手机版
解决时间 2021-04-07 01:26
  • 提问者网友:自食苦果
  • 2021-04-06 13:41
现有一个sql数据库表如何读取二进制内容
最佳答案
  • 五星知识达人网友:逃夭
  • 2021-04-06 14:26
二进制数据由十六进制数表示,可以使用 binary、varbinary和 image数据类型存储。
binary固定长度(最多为8K)的二进制数据类型。
binary[ ( n) ] 固定长度的 n个字节二进制数据。N必须从 1 到 8,000。存储空间大小为 n+4 字节。
varbinary可变长度(最多为8K)的二进制数据类型。
varbinary[ ( n) ]n个
字节变长二进制数据。n必须从 1 到 8,000。存储空间大小为实际输入数据长度 +4个字节,而不是
n个字节。输入的数据长度可能为 0 字节。在 SQL-92 中 varbinary的同义词为 binary
varying。
image用来存储长度超过 8 KB 的可变长度的二进制数据。
除非数据长度超过 8KB,否则一般宜用 varbinary 类型来存储二进制数据。一般用来存放
Microsoft Word 文档、Microsoft Excel 电子表格、包含位图的图像、图形交换格式 (GIF) 文件和联合图像专家组 (JPEG)
文件。
在 Image 数据类型中存储的数据是以位字符串存储的,不是由 SQL Server
解释的,必须由应用程序来解释。例如,应用程序可以使用BMP、TIEF、GIF 和 JPEG 格式把数据存储在 Image 数据类型中。
参考下列C# 代码:
private void Page_Load(object sender, System.EventArgs e)
{
//get the image id from the url
string ImageId = Request.QueryString["img"];

//build our query statement
string sqlText = "SELECt img_data, img_contenttype FROM Image WHERe img_pk = " + ImageId;

SqlConnection connection = new SqlConnection( ConfigurationSettings.AppSettings["DSN"].ToString() );
SqlCommand command = new SqlCommand( sqlText, connection);

//open the database and get a datareader
connection.Open();
SqlDataReader dr = command.ExecuteReader();
if ( dr.Read()) //yup we found our image
{
Response.ContentType = dr["img_contenttype"].ToString();
Response.BinaryWrite( (byte[]) dr["img_data"] );
}
connection.Close();
}
}
全部回答
  • 1楼网友:拜訪者
  • 2021-04-06 15:25
你那是sqlserver数据库还是mysql数据库
  • 2楼网友:神鬼未生
  • 2021-04-06 15:13
正常用select读取啊
如果程序中接收的话,程序也有二进制的吧,字节什么的追问select读取出来是类似于X01125893DS这样的好长的数据 但是本身不是这样的数据 知识代表87445这样的数字追答哦,十六进制转换成数字啊,select cast(0x123 as int)直接转换就行了啊追问读出来的确是数字 但是不是我数据库里面原有的数字 比如原来的是8个数字 现在变成了10个 并且数字顺序等也完全不同呀追答那就要看你插入时的数字是什么类型的了,8进制还是10进制?
varbinary可以与int型之间自由转换,不会丢失数据的追问8进制怎么转? 10进制怎么转 ?刚才试了直接转为int 但是出来的数据不是我要的的那个正确的数据。追答十进制就是int,8进制要换算,单独写函数
你给我个例子吧,例如原数据是123,现在是0x456这样的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯