當前位置:首頁 » 編程語言 » 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