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

sql数据库中二进制转换

发布时间: 2022-05-18 15:31:52

‘壹’ sql数据库二进制数如何转换

C# 保存
openFileDialog1.Filter = "*jpg|*.JPG|*.GIF|*.GIF|*.BMP|*.BMP"; if(openFileDialog1.ShowDialog()==DialogResult.OK) {
string fullpath =openFileDialog1.FileName;//文件路径 FileStream fs = new FileStream(fullpath, FileMode.Open); byte[] imagebytes =new byte[fs.Length]; BinaryReader br = new BinaryReader(fs);
imagebytes = br.ReadBytes(Convert.ToInt32(fs.Length)); //打开数据库
SqlConnection con = new
SqlConnection("server=(local);uid=sa;pwd=;database=test"); con.Open();
SqlCommand com = new SqlCommand("insert into tb_08 values(@ImageList)",con);
com.Parameters.Add("ImageList", SqlDbType.Image); com.Parameters["ImageList"].Value = imagebytes; com.ExecuteNonQuery(); con.Close();

‘贰’ sqlserver数据库中img类型的二进制数据怎么转换成图片,再怎么把图片转换成这个类型的二进制数据

C# 保存
openFileDialog1.Filter = "*jpg|*.JPG|*.GIF|*.GIF|*.BMP|*.BMP";             if(openFileDialog1.ShowDialog()==DialogResult.OK)             { 
              string fullpath =openFileDialog1.FileName;//文件路径               FileStream fs = new FileStream(fullpath, FileMode.Open);                 byte[] imagebytes =new byte[fs.Length];                 BinaryReader br = new BinaryReader(fs); 
                imagebytes = br.ReadBytes(Convert.ToInt32(fs.Length));                 //打开数据库 
                SqlConnection con = new 
SqlConnection("server=(local);uid=sa;pwd=;database=test");                 con.Open(); 
                SqlCommand com = new SqlCommand("insert into tb_08 values(@ImageList)",con); 
                com.Parameters.Add("ImageList", SqlDbType.Image);                 com.Parameters["ImageList"].Value = imagebytes;                com.ExecuteNonQuery();                con.Close();

‘叁’ 求大神指导,如何在sql语句中进行二进制运算

二进制?可是我怎么在你的查询结果中看到4,4是怎么来的?

另外根据你提供的内容,我也有点疑惑。你说的“例如10,包含星期一星期二”,那么假设每星期三是船期,那么这个二进制怎么表示?
个人觉得二进制的存储办法是一个7位数的二进制串,有船期显示1,无船期显示0.如果是周一到周三那么就是0000111(也可能调过来),如果是周一和周三,那么就可能是0000101。可是感觉数据库不是这么存的,反正我没看懂。

‘肆’ sql server 2008 如何使图片变为二进制

Sql不会使图片变成二进制,你要在写程序的时候把图片转换成二进制来进行存储

‘伍’ SQL数据库一字段名被加密后,所有内容显示的二进制的,可以转换为中文吗

不可以
因为这个字段可能存储的是文件,也有可能是加密后的字符
所以不知道怎么转换,只有知道这个字段是怎么定义的,才可以把内容读出来

‘陆’ 怎样在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如何编写函数实现把十进制数转换为二进制数求大神相助!!

创建函数

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数据库中读取二进制数据

读出并生成图片到物理位置
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("读取成功");//查看硬盘上的文件
}
}

‘拾’ 从数据库中怎样把二进制转换成字符串读取到

package mimaxue;
public class StrBinaryTurn {
//将Unicode字符串转换成bool型数组
public boolean[] StrToBool(String input){
boolean[] output=Binstr16ToBool(BinstrToBinstr16(StrToBinstr(input)));
return output;
}
//将bool型数组转换成Unicode字符串
public String BoolToStr(boolean[] input){
String output=BinstrToStr(Binstr16ToBinstr(BoolToBinstr16(input)));
return output;
}
//将字符串转换成二进制字符串,以空格相隔
private String StrToBinstr(String str) {
char[] strChar=str.toCharArray();
String result="";
for(int i=0;i<strChar.length;i++){
result +=Integer.toBinaryString(strChar[i])+ " ";
}
return result;
}
//将二进制字符串转换成Unicode字符串
private String BinstrToStr(String binStr) {
String[] tempStr=StrToStrArray(binStr);
char[] tempChar=new char[tempStr.length];
for(int i=0;i<tempStr.length;i++) {
tempChar[i]=BinstrToChar(tempStr[i]);
}
return String.valueOf(tempChar);
}
//将二进制字符串格式化成全16位带空格的Binstr
private String BinstrToBinstr16(String input){
StringBuffer output=new StringBuffer();
String[] tempStr=StrToStrArray(input);
for(int i=0;i<tempStr.length;i++){
for(int j=16-tempStr[i].length();j>0;j--)
output.append('0');
output.append(tempStr[i]+" ");
}
return output.toString();
}