当前位置:首页 » 编程语言 » 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)

热点内容
苹果的文件怎么转到安卓 发布:2025-01-20 22:43:10 浏览:652
c语言回文串 发布:2025-01-20 22:43:09 浏览:767
垃圾压缩价格 发布:2025-01-20 22:14:05 浏览:421
温十系统如何看处理器配置 发布:2025-01-20 21:59:47 浏览:302
米号源码 发布:2025-01-20 21:55:30 浏览:893
电信四川dns服务器ip 发布:2025-01-20 21:54:51 浏览:92
电脑弹出脚本错误还能继续使用吗 发布:2025-01-20 21:42:29 浏览:586
安卓私密照片在哪里 发布:2025-01-20 21:41:05 浏览:5
同济复试编译原理 发布:2025-01-20 21:33:54 浏览:310
c语言判断字母 发布:2025-01-20 21:31:09 浏览:424