當前位置:首頁 » 編程語言 » SQL文件二進制

SQL文件二進制

發布時間: 2022-08-11 20:49:11

sql2008 二進制數據讀取

是什麼樣的二進制數據格式你應該比較清楚,因為表是你建立的,這個欄位存的是圖片,字元,聲音還是其它的你應該知道,最好的設計是就存一類東西,而不要做成通用性的,接手你開發的人也會覺得莫名其妙,不利於維護。
比如說你說怎麼知道是圖片,假如是點陣圖文件,那麼點陣圖(BMP)有自己的文件頭,這個文件頭會告訴你點陣圖的長,寬,像素位數等。當然圖片還有其它格式。你別想著你編一個萬能的程序能把世界上現有的一切格式都識別出來,即使識別出來了,效率也是十分低下的。
如果你定義這個欄位是放圖片的,你的程序就專門識別它是不是圖片,即使是圖片,格式也非常多,BMP,JPEG,PNG,GIF等等。建議你就放BMP的,這樣識別專一,也快。
BMP的文件的格式直接網路里就有,官方網站也有,公開的。然後讀取這個頭結構大小的二進制數據,判斷每個數據對應的標志即可識別圖片。
同樣是不是字元得開發者知道這個欄位的用途,別想著一個欄位是萬能的,這種開發思路是不好的。如果你用它來放聲音,聲音的格式也好多,你想做得萬能就得把世界上主流的聲音格式的文件頭結構清楚,然後做一個程序識別。當然現在可以藉助一些DLL來弄。
如果欄位里是圖片,很簡單首先用一些16進制編輯器,創建一個空的二進制文件,然後把這個欄位里的內容復制粘貼到裡面,如果這個圖片是包含文件頭的完整圖片,假如是BMP,保存完之後文件名的後綴是BMP即可。一般都有文件頭的,這個沒必要省。開發者應該清楚這點。這是手工,如果你想用編程的語句自動弄,而且批量的,我對SQL的學習並不深入,沒發現有能用SQL直接進行文件讀寫的操作語句。但是可以用C++實現,可以用ODBC編程。直接SDK也行,快速的方法是藉助MFC里封裝好的對ODBC操作的類,然後嵌入SQL語句,讀取這個欄位的內容,然後利用MFC里封裝好的對文件操作的類,將這些數據寫入即可。
呵呵,這些思路不知能否幫你。

㈡ 現有一個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資料庫中保存為二進制記錄(註:不是用圖片路徑),最好有源代碼。

首先在SQL Server中建立一個圖片存儲的數庫表,ImageData Column為圖象二進制數據儲存欄位,ImageContentType Column為圖象文件類型記錄欄位,
ImageDescription Column為儲蓄圖象文件說明欄位,ImageSize Column為儲存圖象文件長度欄位,結構如下:
CREATE TABLE [dbo].[ImageStore] (
[ImageID] [int] IDENTITY (1, 1) NOT NULL ,
[ImageData] [image] NULL ,
[ImageContentType] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[ImageDescription] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
[ImageSize] [int] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] 向資料庫中存入圖片:using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Data.SqlClient;namespace UpLoadFile
{
/// <summary>
/// Summary description for UpLoadImage.
/// </summary>
public class UpLoadImage : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button btnUpload;
protected System.Web.UI.WebControls.Label txtMessage;
protected System.Web.UI.WebControls.TextBox txtDescription;
protected System.Web.UI.HtmlControls.HtmlTable Table1;
protected System.Web.UI.HtmlControls.HtmlInputFile UP_FILE;//HtmlControl、WebControls控制項對象
protected Int32 FileLength = 0;

private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
if(!Page.IsPostBack)
{
}
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.btnUpload.Click += new System.EventHandler(this.btnUpload_Click);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void btnUpload_Click(object sender, System.EventArgs e)
{
HttpPostedFile UpFile = this.UP_FILE.PostedFile; //HttpPostedFile對象,用於讀取圖象文件屬性
FileLength = UpFile.ContentLength; //記錄文件長度
try
{
if (FileLength == 0)
{ //文件長度為零時
txtMessage.Text = "<b>請你選擇你要上傳的文件</b>";
}
else
{
Byte[] FileByteArray = new Byte[FileLength]; //圖象文件臨時儲存Byte數組
Stream StreamObject = UpFile.InputStream; //建立數據流對像
//讀取圖象文件數據,FileByteArray為數據儲存體,0為數據指針位置、FileLnegth為數據長度
StreamObject.Read(FileByteArray,0,FileLength);
//建立SQL Server鏈接
SqlConnection Con = new SqlConnection("uid=sa;pwd= ;initial catalog=EE;data source=127.0.0.1;Connect Timeout=90");
String SqlCmd = "INSERT INTO ImageStore (ImageData, ImageContentType, ImageDescription, ImageSize) VALUES (@Image, @ContentType, @ImageDescription, @ImageSize)";
SqlCommand CmdObj = new SqlCommand(SqlCmd, Con);
CmdObj.Parameters.Add("@Image",SqlDbType.Binary, FileLength).Value = FileByteArray;
CmdObj.Parameters.Add("@ContentType", SqlDbType.VarChar,50).Value = UpFile.ContentType; //記錄文件類型
//把其它單表數據記錄上傳
CmdObj.Parameters.Add("@ImageDescription", SqlDbType.VarChar,200).Value = txtDescription.Text;
//記錄文件長度,讀取時使用
CmdObj.Parameters.Add("@ImageSize", SqlDbType.BigInt,8).Value = UpFile.ContentLength;
Con.Open();
CmdObj.ExecuteNonQuery();
Con.Close();
txtMessage.Text = "<p><b>OK!你已經成功上傳你的圖片</b>";//提示上傳成功
}
}
catch (Exception ex)
{
txtMessage.Text = ex.Message.ToString();
}

} }
}
將資料庫中的圖片數據讀出來顯示:using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Data.SqlClient;namespace UpLoadFile
{
/// <summary>
/// Summary description for ReadImage.
/// </summary>
public class ReadImage : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
if(!Page.IsPostBack)
{
string id = Request.QueryString["ImgID"]; //得到圖片的ID if (id != ""&& id != null && id != string.Empty)
{
ShowImage( id);
}
}
} #region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load); }
#endregion public void ShowImage(string id)
{
int ImgID = Convert.ToInt32(id); //ImgID為圖片ID
//建立資料庫鏈接
SqlConnection Con = new SqlConnection("uid=sa;pwd= ;initial catalog=EE;data source=127.0.0.1;Connect Timeout=90");
String SqlCmd = "SELECT * FROM ImageStore WHERE ImageID = @ImageID";
SqlCommand CmdObj = new SqlCommand(SqlCmd, Con);
CmdObj.Parameters.Add("@ImageID", SqlDbType.Int).Value = ImgID;
try
{
Con.Open();
SqlDataReader SqlReader = CmdObj.ExecuteReader();
SqlReader.Read();
Response.ContentType = (string)SqlReader["ImageContentType"];//設定輸出文件類型
//輸出圖象文件二進制數制
Response.OutputStream.Write((byte[])SqlReader["ImageData"], 0, (int)SqlReader["ImageSize"]);
Response.End();
Con.Close();
}
catch
{
Response.Write("<script>alert('該圖片不存在');</script>");
return;
} }
}
}

㈣ 如何修改SQL資料庫中存儲的二進制圖片

是的
你需要把資料庫裡面的二進制的圖片元組進行修改
或者刪除除再插入新的數據
一般以二進制存放到資料庫的圖片就不需要存放到文件夾
文件夾有沒有這張圖片都會顯示

㈤ 求大神指導,如何在sql語句中進行二進制運算

二進制?可是我怎麼在你的查詢結果中看到4,4是怎麼來的?

另外根據你提供的內容,我也有點疑惑。你說的「例如10,包含星期一星期二」,那麼假設每星期三是船期,那麼這個二進制怎麼表示?
個人覺得二進制的存儲辦法是一個7位數的二進制串,有船期顯示1,無船期顯示0.如果是周一到周三那麼就是0000111(也可能調過來),如果是周一和周三,那麼就可能是0000101。可是感覺資料庫不是這么存的,反正我沒看懂。

㈥ SQL資料庫 二進制圖片如何導出成文件

SQL資料庫 二進制圖片如何導出成文件
1.將圖片以二進制存入資料庫
//保存圖片到資料庫
protected void Button1_Click(object sender, EventArgs e)
{
//圖片路徑
string strPath = "~/photo/03.JPG";
string strPhotoPath = Server.MapPath(strPath);
//讀取圖片
FileStream fs = new System.IO.FileStream(strPhotoPath, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
byte[] photo = br.ReadBytes((int)fs.Length);
br.Close();
fs.Close();
//存入
SqlConnection myConn = new SqlConnection("Data Source=127.0.0.1;Initial Catalog=TestDB;User ID=sa;Password=sa");
string strComm = " INSERT INTO personPhoto(personName, personPhotoPath, personPhoto) ";
strComm += " VALUES('wangwu', '" + strPath + "', @photoBinary )";
SqlCommand myComm = new SqlCommand(strComm, myConn);
myComm.Parameters.Add("@photoBinary", SqlDbType.Binary,photo.Length);
myComm.Parameters["@photoBinary"].Value = photo;
myConn.Open();
myComm.ExecuteNonQuery();
myConn.Close();
}
2.讀取二進制圖片在頁面顯示
//讀取圖片
SqlConnection myConn = new SqlConnection("Data Source=127.0.0.1;Initial Catalog=TestDB;User ID=sa;Password=sa");
string strComm = " SELECT personPhoto FROM personPhoto WHERE personName='wangwu' ";
SqlCommand myComm = new SqlCommand(strComm, myConn);
myConn.Open();
SqlDataReader dr = myComm.ExecuteReader();
while (dr.Read())
{
byte[] photo = (byte[])dr["personPhoto"];
this.Response.BinaryWrite(photo);
}
dr.Close();
myConn.Close();

SqlConnection myConn = new SqlConnection("Data Source=127.0.0.1;Initial Catalog=TestDB;User ID=sa;Password=sa");
SqlDataAdapter myda = new SqlDataAdapter(" SELECT personPhoto FROM personPhoto WHERE personName='11' ", myConn);
DataSet myds = new DataSet();
myConn.Open();
myda.Fill(myds);
myConn.Close();
byte[] photo = (byte[])myds.Tables[0].Rows[0]["personPhoto"];
this.Response.BinaryWrite(photo);
3.設置Image控制項顯示從資料庫中讀出的二進制圖片

㈦ 在SQL Server中,共使用了3種數據類型來存儲二進制數據,分別是______、______、

主要涉及 binary varbinary image 這三個欄位類型吧

請仔細了解sqlserver 各種數據類型

sql二進制數據類型詳解

如有疑問,及時溝通!

㈧ C#怎麼讀SQL里的二進制數據

先把sql里的數據讀到一張DataTable里,然後給dgv賦值。 dgv.DataSource = xxxdatatable//就是把你sql讀出的內容賦給dgv.DataSource

㈨ 如何從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("讀取成功");//查看硬碟上的文件
}
}

㈩ 怎樣在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)

熱點內容
php顯示資料庫中圖片 發布:2025-01-21 00:44:34 瀏覽:145
如何在伺服器中找文件 發布:2025-01-21 00:38:50 瀏覽:910
Cmdpython命令 發布:2025-01-21 00:30:38 瀏覽:757
mac常用解壓 發布:2025-01-21 00:01:47 瀏覽:691
linuxcpu使用 發布:2025-01-21 00:00:59 瀏覽:849
成套供應配電櫃有哪些配置 發布:2025-01-21 00:00:52 瀏覽:120
GO編譯器PDF 發布:2025-01-21 00:00:52 瀏覽:703
osu上傳成績 發布:2025-01-20 23:59:57 瀏覽:641
了解sql 發布:2025-01-20 23:58:39 瀏覽:655
安卓雙擊鎖屏如何設置 發布:2025-01-20 23:56:52 瀏覽:201