当前位置:首页 » 编程语言 » sql转二进制数据
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql转二进制数据

发布时间: 2023-06-18 20:09:49

① 如何从sql数据库中读取二进制数据

读出并生成图片到物理位置
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数据库表如何读取二进制内容

  1. 二进制数据由十六进制数表示,可以使用binary、varbinary和image数据类型存储。

  2. binary固定长度(最多为8K)的二进制数据类型。

    binary[ ( n) ] 固定长度的 n个字节二进制数据。N必须从 1 到 8,000。存储空间大小为 n+4 字节。

  3. varbinary可变长度(最多为8K)的二进制数据类型。

    varbinary[ ( n) ]n个

  4. 字节变长二进制数据。n必须从 1 到 8,000。存储空间大小为实际输入数据长度 +4个字节,而不是
    n个字节。输入的数据长度可能为 0 字节。在 SQL-92 中varbinary的同义词为binary
    varying。

  5. image用来存储长度超过 8 KB 的可变长度的二进制数据。

  6. 除非数据长度超过 8KB,否则一般宜用 varbinary 类型来存储二进制数据。一般用来存放
    Microsoft Word 文档、Microsoft Excel 电子表格、包含位图的图像、图形交换格式 (GIF) 文件和联合图像专家组 (JPEG)
    文件。

  7. 在 Image 数据类型中存储的数据是以位字符串存储的,不是由 SQL Server
    解释的,必须由应用程序来解释。例如,应用程序可以使用BMP、TIEF、GIF 和 JPEG 格式把数据存储在 Image 数据类型中。

  8. 参考下列C# 代码:

  9. 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