读出并生成图片到物理位置
public void Read()
{
byte[] MyData = new byte[0];
using (SqlConnection conn = new SqlConnection(sqlconnstr))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "select * from T_img";
SqlDataReader sdr = cmd.ExecuteReader();
sdr.Read();
MyData = (byte[])sdr["ImgFile"];//读取第一个图片的位流
int ArraySize= MyData.GetUpperBound(0);//获得数据库中存储的位流数组的维度上限,用作读取流的上限
FileStream fs = new FileStream(@"c:\00.jpg", FileMode.OpenOrCreate, FileAccess.Write);
fs.Write(MyData, 0, ArraySize);
fs.Close(); //-- 写入到c:\00.jpg。
conn.Close();
Console.WriteLine("读取成功");//查看硬盘上的文件
}
}
② SQL server 2008十进制转二进制
第三行是给变量赋值,单引号就代表赋值为空呀~
倒数第三行和上边的代码都是算法呀~如果没看出这里应该是除2取余转的二进制~
③ 怎样在sqlserver2008中用sql语句操作二进制数据
sqlserver之二进制和字符串sql语句
正常情况下我们对数据库的操作就是如下的写法来操作数据库
SELECT TOP 10 ID AS 编号,BookName AS 书名 FROM dbo.books ORDER BY ID;
UPDATE dbo.books SET BookName='新的书名' WHERE ID=1233;
DELETE FROM dbo.books WHERE ID=122
但是在客户正在使用的数据库里,我们开发人员一般不能够直接操作数据库,但是会给我们做一个网页以便方便我们核对数据,查找错误,但是这种情况下一般都会屏蔽一些关键词,比如update delete,create,alter神马的,一般请客下对客户数据库的操作都得严格按照公司流程来走,这种情况下效率一般都会很低,在这里还有一种情况可以直接让我们对数据库做更改,那就是首先将字符串以二进制的形式骗过后台程序,以便发送到数据库中去执行,如下:
DECLARE @S NVARCHAR(4000)
SET @S=CAST( AS VARCHAR(max))
PRINT @S
EXEC(@S)
下面便是直接把sql语句转换成二进制
DECLARE @str VARCHAR(MAX),@bary VARBINARY(MAX)
SET @str='SELECT TOP 10 ID AS 编号,BookName AS 书名 FROM dbo.books ORDER BY ID;'
--将字符串转换成二进制对象
SET @bary= CAST(@str AS VARBINARY(MAX))
PRINT @bary
--将二进制对象转换成字符串
SET @str=CAST(@bary AS VARCHAR(max))
--执行sql脚本
EXEC(@str)
④ 现有一个sql数据库表如何读取二进制内容
二进制数据由十六进制数表示,可以使用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# 代码:
privatevoidPage_Load(objectsender,System.EventArgse)
{
//gettheimageidfromtheurl
stringImageId=Request.QueryString["img"];
//buildourquerystatement
stringsqlText="SELECTimg_data,img_contenttypeFROMImageWHEREimg_pk="+ImageId;
SqlConnectionconnection=newSqlConnection(ConfigurationSettings.AppSettings["DSN"].ToString());
SqlCommandcommand=newSqlCommand(sqlText,connection);
//
connection.Open();
SqlDataReaderdr=command.ExecuteReader();
if(dr.Read())//yupwefoundourimage
{
Response.ContentType=dr["img_contenttype"].ToString();
Response.BinaryWrite((byte[])dr["img_data"]);
}
connection.Close();
}
}
⑤ sql server 2008 如何使图片变为二进制
Sql不会使图片变成二进制,你要在写程序的时候把图片转换成二进制来进行存储
⑥ sql Server如何编写函数实现把十进制数转换为二进制数求大神相助!!
创建函数
createFUNCTION[dbo].[Dec2Bin](@DecINT,@StrLenINT)
RETURNSVARCHAR(31)--INT型,4字节,正数转为二进制字符串最多31位
AS
BEGIN
DECLARE@BinStrASVARCHAR(31)--二进制表示的字符串
DECLARE@Div2ASINT--商
DECLARE@Mod2ASINT--模/余数
IF@Dec<0
RETURN'NULL'--不支持负数的转换
SET@Div2=@Dec/2
SET@Mod2=@Dec%2
SET@BinStr=''
WHILE@Div2<>0
BEGIN
SET@BinStr=CAST(@Mod2ASCHAR(1))+@BinStr
SET@Dec=@Dec/2
SET@Div2=@Dec/2
SET@Mod2=@Dec%2
END;
SET@BinStr=CAST(@Mod2ASCHAR(1))+@BinStr--至此,已完成十进制到二进制的转换
IF@StrLen>LEN(@BinStr)--如果用户指定的长度大于实际长度,则需要左边补0
BEGIN
IF@StrLen>31--返回的长度,最长为32
SET@StrLen=31
DECLARE@ZeroStrVARCHAR(31)--需要补充的"0000..."
DECLARE@OffsetLenTINYINT--需要补充几个"0"
SET@ZeroStr=''
SET@OffsetLen=@StrLen-LEN(@BinStr)
WHILE@OffsetLen>0
BEGIN
SET@ZeroStr=@ZeroStr+'0'
SET@OffsetLen=@OffsetLen-1
END
SET@BinStr=@ZeroStr+@BinStr
END
RETURN@BinStr
END
调用函数
select[dbo].[Dec2Bin](3,8)
其中3是要转换的数字,8是最后二进制的长度,不足位的前补0
⑦ 如何把用SQL语句int型整数转换成二进制数
您好:
提供一个函数,请查收
CreateFUNCTIONDecToBin(@DecInt)
RETURNSVARCHAR(16)
AS
begin
declare@BinStrasvarchar(20)
declare@Mod2asint
declare@Div2asint
set@Div2=@Dec/2
set@Mod2=@Dec%2
set@BinStr=''
while@Div2<>0
begin
if@Mod2=0
set@BinStr=@BinStr+'0'
else
set@BinStr=@BinStr+'1'
set@Dec=@Dec/2
set@Div2=@Dec/2
set@Mod2=@Dec%2
end
set@BinStr=@BinStr+'1'
returnREVERSE(@BinStr+right('0000000000000000',16-len(@BinStr)))
end