我把你的代码稍微改造了下,我这边是可以显示的。代码如下:
数据库 *** 作部分:
package comdatabase;import javaioInputStream;
import javasql;
/
@作者 王建明
@创建日期 13-10-7
@创建时间 下午12:32
@版本号 V 10
/
public class DataBaseUtil {
public static InputStream getImageStreamFromDataBase() {
Connection conn = null;
try {
ClassforName("commysqljdbcDriver");
conn =
DriverManagergetConnection("jdbc:mysql://localhost/quickstart", "root", "123456");
Statement stmt = conncreateStatement();
String sql = "select book_image from tbl_book where id=1 ";
ResultSet rs = stmtexecuteQuery(sql);
if (rsnext()) {
return rsgetBinaryStream("book_image");
}
} catch (Exception e) {
Systemoutprintln("出现异常: " + egetMessage());
} finally {
try {
if (conn != null)
connclose();
} catch (SQLException e) {
eprintStackTrace();
}
}
return null;
}
}
servlet部分:
package comservlet;import comdatabaseDataBaseUtil;
import javaxservletServletException;
import javaxservlet>}
webxml中的servlet配置:
<servlet><servlet-name>ShowImage</servlet-name>
<servlet-class>comservletShowImage</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ShowImage</servlet-name>
<url-pattern>/showImage</url-pattern>
</servlet-mapping>
页面中加载方式:
<img src="showImage" />希望对你有帮助O(∩_∩)O~
给你个示例,下面是读取数据库中的二进制数据,并存放到指定的地方的,读取的,应该差不多
strSQL = "select From CodeFile where CodeID=" & ID
RsOpen strSQL, Conn, 1, 3
While Not RsEOF
FileName = Rs("FileName")Value
Str = Rs("FileContent")GetChunk(Rs("FileContent")ActualSize)
Call SaveFile(Str, AppPath & "\Tmp\" & FileName)
RsMoveNext
Wend
'下面是SaveFile的过程
Public Sub SaveFile(Str, fName)
Dim objstream As New ADODBStream
'--------------建立ADODBStream对象,必须要ADO 25以上版本---------
objstreamType = 1
'-------------以二进制模式打开-------------------------------------
objstreamOpen
'--------------------将字符串内容写入缓冲--------------------------
objstreamWrite Str
'--------------------将缓冲的内容写入文件--------------------------
objstreamSaveToFile fName, 1
objstreamClose
Set objstream = Nothing
'-----------------------关闭对象,释放资源-------------------------
End Sub
安卓中如何获取保存的uri 并保存到sqlite数据库中
有如下两种方法,仅供参考
方法一:Java代码
public void saveIcon(Bitmap icon) {
if (icon == null) {
return;
}
// 最终图标要保存到浏览器的内部数据库中,系统程序均保存为SQLite格式,Browser也不例外,因为是二进制的所以使用字节数组存储数据库的
// BLOB类型
final ByteArrayOutputStream os = new ByteArrayOutputStream();
// 将Bitmap压缩成PNG编码,质量为100%存储
iconcompress(BitmapCompressFormatPNG, 100, os);
// 构造SQLite的Content对象,这里也可以使用
raw ContentValues values = new ContentValues();
// 写入数据库的
BrowserBookmarkColumnsTOUCH_ICON字段 valuesput(BrowserBookmarkColumnsTOUCH_ICON, ostoByteArray());
DBUtilupdate();
//调用更新或者插入到数据库的方法
}
}
方法二:如果数据表入口时一个content:URIJava代码
import androidproviderMediaStoreImagesMedia;
import androidcontentContentValues;
import javaioOutputStream;
// Save the name and description of an image in a ContentValues map
ContentValues values = new ContentValues(3);
valuesput(MediaDISPLAY_NAME, "road_trip_1");
valuesput(MediaDESCRIPTION, "Day 1, trip to Los Angeles");
valuesput(MediaMIME_TYPE, "image/jpeg");
// Add a new record without the bitmap, but with the values just set
// insert() returns the URI of the new record
Uri uri = getContentResolver()insert(MediaEXTERNAL_CONTENT_URI, values);
// Now get a handle to the file for that record, and save the data into it
// Here, sourceBitmap is a Bitmap object representing the file to save to the database
try {
OutputStream outStream = getContentResolver()openOutputStream(uri);
sourceBitmapcompress(BitmapCompressFormatJPEG, 50, outStream);
outStreamclose();
} catch (Exception e) {
Loge(TAG, "exception while writing image", e);
}
原文请看>
这里介绍两种种方法。
1,SqlDataReader的GetSqlBytes方法用于检索varbinary(max)列的内容。
reader = commandExecuteReader(CommandBehaviorSequentialAccess);
while (readerRead())
SqlBytes bytes = readerGetSqlBytes(0);
例1从NorthWind数据库的Employees表读取雇员图像并显示。SqlDataReader的GetSqlBytes方法返回一个SqlBytes对象,该对象公开Stream属性。使用该属性创建新的Bitmap对象,然后以Gif ImageFormat格式保存到Stream。
private void ReadPhoto(string lastName) //读取雇员图像并显示
{
using (SqlConnection connection = new SqlConnection(ConnectionString))
{
Stream s = new MemoryStream(); //创建一个以内存为后备存储的流
SqlCommand command = connectionCreateCommand();
SqlDataReader reader = null;
try
{
commandCommandText = "SELECT LastName,Photo FROM dboEmployees " +
" WHERE LastName=@LastName";
commandCommandType = CommandTypeText;
//声明参数并赋值
SqlParameter parameter = new SqlParameter("@LastName", SqlDbTypeNVarChar, 20);
parameterValue = lastName;
commandParametersAdd(parameter);
connectionOpen();
//修改DataReader的默认行为,SequentialAccess按顺序接收数据并立即加载
//CloseConnection指明关闭DataReader时,对数据库的连接也关闭
reader = commandExecuteReader(
CommandBehaviorSequentialAccess|CommandBehaviorCloseConnection);
if (readerHasRows)
{
while (readerRead())
{
//SequentialAccess要求按顺序接收数据,先接受reader[0]
thislabel1Text = reader[0]ToString();
if (readerIsDBNull(1)) //若列值为空返回
return;
else
{
//使用readerGetSqlBytes获取图像数据
SqlBytes bytes = readerGetSqlBytes(1);
using (Bitmap productImage = new Bitmap(bytesStream))
{
//以gif格式保存在Stream流并显示
productImageSave(s, SystemDrawingImagingImageFormatGif);
thispictureBox1Image = SystemDrawingImageFromStream(s);
} } }
}
else
MessageBoxShow("No records returned");
}
catch (Exception ex)
{
MessageBoxShow(exMessage);
}
Finally
{
if (reader != null)
readerDispose(); //关闭DataReader,同时关闭对数据库连接
}
sClose(); //关闭流
}
}
本程序将DataReader设置为SequentialAccess,要求顺序访问字段,所以先读取LastName小数据,再读取图像大数据。程序运行后从组合框选取雇员的LastName,将在图形框出现雇员的图像,
2,SqlDataReader的GetSqlBinary方法可用于检索varbinary(max)列的内容。
reader = commandExecuteReader(CommandBehaviorCloseConnection);
while (readerRead())
SqlBinary binaryStream = readerGetSqlBinary(0);
例2 AdventureWorks2008数据库中的ProductionProductPhoto表含有图形列LargePhoto,数据类型是varbinary(max),可空。用GetSqlBinary方法检索图形数据的代码如下:
private void ReadPhoto(int documentID) //输入参数documentID是产品ID
{
using (SqlConnection connection = new SqlConnection(GetConnectionString()))
{
thislabel1Text = documentIDToString();
try
{
string queryString = "SELECT LargePhoto FROM ProductionProductPhoto " +
"WHERE ProductPhotoID=@ProductPhotoID";
SqlCommand command = new SqlCommand(queryString, connection);
SqlParameter paramID = new SqlParameter("@ProductPhotoID", SqlDbTypeInt);
paramIDValue = documentID;
commandParametersAdd(paramID);
connectionOpen();
//修改DataReader的默认行为
SqlDataReader reader = commandExecuteReader(
CommandBehaviorSequentialAccess|CommandBehaviorCloseConnection);
if (readerHasRows)
{
while (readerRead())
{
if (readerIsDBNull(0))
return;
else
{
Stream s = new MemoryStream();
SqlBinary binaryStream = readerGetSqlBinary(0);
//根据SqlBinary值初始化SqlBytes类的新实例
SqlBytes bytes = new SqlBytes(binaryStream);
using (Bitmap productImage = new Bitmap(bytesStream))
{
//用gif格式保存图形
productImageSave(s, SystemDrawingImagingImageFormatGif);
thispictureBox1Image = SystemDrawingImageFromStream(s);
}
sClose();
} }
}
else
MessageBoxShow("No records returned");
}
catch (Exception ex)
{
MessageBoxShow(exMessage);
} }
}
下图为documentID=100的自行车类型
以上示例取自C#编程指南但尧编著清华大学出版社2011年1月
以上就是关于读取保存在数据库里的图片JSP页面显示无法显示图片全部的内容,包括:读取保存在数据库里的图片JSP页面显示无法显示图片、关于VB 6 怎样读取Access数据库中的图片(ole类型数据)和调用chn帮助文件、android 如何获取保存的图片的地址 并存到数据库中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)