asp.net(C#)与ACCESS数据库存取二进制图片

前台代码:
<asp:FileUpload ID="UP_FILE" runat="server" Width="300px"/>名字:<asp:TextBox ID="TextBox1" runat="server" MaxLength="20"></asp:TextBox><asp:Button ID="Button1" runat="server" onclick="Button1_Click" style="height: 26px" Text="Button" />
...............................
后台代码:
protected Int32 FileLength = 0; //记录文件长度变量
protected void Button1_Click(object sender, EventArgs e)
{
string name = UP_FILE.PostedFile.FileName;
string type = name.Substring(name.LastIndexOf(".") + 1);
HttpPostedFile upFile = UP_FILE.PostedFile;//HttpPostedFile对象,用来读取上传图片的属性
int fileLength = upFile.ContentLength;//记录文件的长度
byte[] FileByteArray = new byte[fileLength];//用图片的长度来初始化一个字节数组存储临时的图片文件
Stream fileStream = upFile.InputStream;//建立文件流对象
fileStream.Read(FileByteArray, 0, fileLength);
if (type == "jpg" || type == "gif" || type == "bmp" || type == "png" || type == "JPG" || type == "GIF" || type == "BMP" || type == "PNG")
{
OleDbConnection Con = OledbCon.OledbAccess.OledConeadata();//定义数据库连接对象
String SqlCmd = "INSERT INTO imgdata([user], [imagedata]) VALUES('" + this.TextBox1.Text.Trim() + "', '" + FileByteArray + "')";
Con.Open();//打开数据库
OleDbCommand CmdObj = new OleDbCommand(SqlCmd, Con);//定义Command对象
CmdObj.ExecuteNonQuery();//执行数据库插入操作
Con.Close();//关闭数据库连接
//提示上传成功
Response.Write("<script language=javascript>alert('成功上传图片!')</script>");
}
}

}
}
..............................
读取二进制图片代码:
byte[] b_logoImg;
protected void Page_Load(object sender, EventArgs e)
{
string strSQL = "SELECT top 1 * FROM imgdata order by id desc";//只要一张图片
OleDbConnection conn = OledbCon.OledbAccess.OledConeadata();//连接数据库
conn.Open();
OleDbDataAdapter sda = new OleDbDataAdapter(strSQL, conn);
DataSet ds = new DataSet();
sda.Fill(ds, "imgdata");
conn.Close();
b_logoImg = (byte[])(ds.Tables[0].Rows[0][2]);//得到数据库二进制字段内容
if (b_logoImg.Length > 0)
{
//MemoryStream ms = new MemoryStream(b_logoImg);
//Response.Clear();
//Response.ContentType = "image/gif";
//Response.OutputStream.Write(b_logoImg, 0, b_logoImg.Length);
Response.BinaryWrite(b_logoImg);
Response.End();
}
}
...........................
问题:能成功的以二进制上传到数据库(用的是ACCESS数据库),但是读取图片的时候就是显示不出图片。怎么回事,请高手帮忙。。。小弟在这里谢谢了(成功后加分)
Button1_Click事件完成后,ACCESS数据库中是否有值。
页面加载的时候加个判断,if(!IsPostBack)再执行读取图片信息。
再就是看下执行完b_logoImg = (byte[])(ds.Tables[0].Rows[0][2])这句后,b_logoImg里的值,是不是有读取到相应的二进制文件流的值
这些都正确,所以才难到我了,能解决的帮帮忙,感激不尽

第1个回答  2010-06-08
<%@ language = "vbscript" %>
<%
dim sn
dim constr
dim sqlstr

***************************************************
Response.Expires =-1
Response.AddHeader "Pragma","no-cache"
Response.AddHeader "cache-ctrol","no-cache"
***************************************************

'sn = request.QueryString("sn")
sn=trim(Request("sn"))
none=""
if sn = "" then
sn=0
none=" or 1=0"
end if

set connGraph = server.CreateObject("ADODB.connection")
constr="Provider=sqloledb;Server=DTLTJFB\DTSQL2000;initial Catalog=dt_unicom;UID=identify_admin;PWD=sa;"
connGraph.Open constr

sqlstr="select img_data from [aa_identify_detail] where id=" & sn & none
set rec=connGraph.Execute(sqlstr)

if rec.eof or rec.bof then Response.end

img=rec("img_data")
isize=len(img)*2+500
'response.write isize
***************************************************
Response.ContentType = "image/jpeg"
Response.BinaryWrite rec("img_data").getChunk(isize)
***************************************************
set rec=nothing
connGraph.close
set connGraph=nothing
%>

以前做的一个程序。****号处,好好看看。
第2个回答  2010-06-08
加个断点调试一下,一个是看下Button1_Click事件完成后,ACCESS数据库中是否有值。
页面加载的时候加个判断,if(!IsPostBack)再执行读取图片信息。
再就是看下执行完b_logoImg = (byte[])(ds.Tables[0].Rows[0][2])这句后,b_logoImg里的值,是不是有读取到相应的二进制文件流的值本回答被提问者采纳

asp.net(C#)与ACCESS数据库存取二进制图片
<%@ language = "vbscript" %> < dim sn dim constr dim sqlstr Response.Expires =-1 Response.AddHeader "Pragma","no-cache"Response.AddHeader "cache-ctrol","no-cache"'sn = request.QueryString("sn")sn=trim(Request("sn"))none=""if sn = "" then sn=0 none=" or 1=0"e...

如何用ASP.NET想数据库中存取图片
\/\/存储图片的代码,需在界面添加按钮Button1,打开文件对话框openFileDialog1,列表框listBox1和图片控件pictureBox1,代码注释部分为SqlServer实现,非注释部分为Access实现,在Access中,数据库名为mydb.mdb,表名为photos,字段为photoid(文本类型,主键),photoimg(OLE对象类型,用于存图片){ openFileDialog1.Filte...

asp.net,该怎样读取access数据库中的二进制图片,并由Image1控件显示...
代码就不给了,你将图片的路径放在Fimag中,刚学,就要多动动手。不要拿来主义,学计算机的都是聪明人

asp.net中怎样将数据库中二进制图片读取出来并做成图片播动效果 急...
读出二进制为byte[]这后转成流,之后从流转成bmp

在ASP.NET中怎么图片转换二进制
首先数据库里面有一字段类型为image,我这里是一个窗体应用程序,也是将图片以二进制的形式保存至数据库的,思路是一样的byte[] photo; public byte[] Photo { get { return photo; } set { photo = value; } } FileStream fs; string fileName = string.Empty; private...

access数据库内存的是二进制的数据,怎么展示在ASP.NET 页面上呢?
看你那个二进制是什么文件,把它转化后显示出来就好了。EG:是图片就 输出流 再画出来。呵呵,你上传什么文件 把它的后缀名也弄个字段存下来,读取的时候,根据文件类型转化成应该的文件。我是这样想的,不知道可以实现不。

各位网友好,下面是在ASP.NET(C#)中链接ACCESS的代码,请问如何把ACCESS表...
读到二维数组中,就需要循环你的DataRow foreach(DataRow row in ds.Tables[0].Rows){ \/\/这里就是赋值语句} \/\/行数 ds.Tables[0].Rows.Count \/\/列数 ds.Tables[0].Rows[0].Columns.Count

asp.net中如何调出access存放的图片信息(c#)
首先在后台中连接数据库。protected void Page_Load(object sender, EventArgs e){ bind();} public void bind(){ if (!IsPostBack){ OleDbConnection con;OleDbCommand cmd;OleDbDataReader dtr;string conString, selectString;conString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA Source=" + System...

怎样在asp.net中连接ACCESS数据库?
在asp.net中连接ACCESS数据库有两种方法,具体操作如下:第一种方法,就是真接在在设计页面上拉一个控件,例如GridView、DataList,点击右上角那个三角符,新建数据源,在跳出的对话框选择数据库,新建连接,在添加连接对话框的更改那里选择Access数据库,之后在浏览那里选择你的数据库,测试成功的话,接下来的,就...

...ASP.NET+Access实现图片上传存储到Access数据库的image中;而image存 ...
file" \/>直接给个上传按钮,用Jquery写 (document).ready(function () { ("#upfile").uploadify({ 里面上传的文件夹为 'folder': '..\/..\/images',然后还有设置回传图片 onComplete: function(){ document.getElementById("img").src = "..\/..\/images\/" + response + ".jpg";} ...

相似回答
大家正在搜