
你的queyr1中的查询改为这个试试
假定以前是select
from
表名,自增长列为id
SELECT
top
1
FROM
表名
ORDER
BY
Rnd(id)
分类: 电脑/网络 >> 程序设计 >> 其他编程语言
解析:
的:
private void btnUpload_Click(object sender, SystemEventArgs e)
{
得到用户要上传的文件名
string strFilePathName = loFilePostedFileFileName;
string strFileName = PathGetFileName(strFilePathName);
int FileLength = loFilePostedFileContentLength;
if(FileLength<=0)
return;
try
{上传文件
Byte[] FileByteArray = new Byte[FileLength]; 图象文件临时储存Byte数组
Stream StreamObject = loFilePostedFileInputStream; 建立数据流对像
读取图象文件数据,FileByteArray为数据储存体,0为数据指针位置、FileLnegth为数据长度
StreamObjectRead(FileByteArray,0,FileLength);
建立SQL Server链接
string strCon = SystemConfigurationConfigurationSettingsAppSettings["DSN"];
SqlConnection Con = new SqlConnection(strCon);
String SqlCmd = "INSERT INTO ImageStore (ImageData, ImageContentType, ImageDescription, ImageSize) VALUES (@Image, @ContentType, @ImageDescription, @ImageSize)";
SqlCommand CmdObj = new SqlCommand(SqlCmd, Con);
CmdObjParametersAdd("@Image",SqlDbTypeBinary, FileLength)Value = FileByteArray;
CmdObjParametersAdd("@ContentType", SqlDbTypeVarChar,50)Value = loFilePostedFileContentType; 记录文件类型
把其它单表数据记录上传
CmdObjParametersAdd("@ImageDescription", SqlDbTypeVarChar,200)Value = tbDescriptionText;
记录文件长度,读取时使用
CmdObjParametersAdd("@ImageSize", SqlDbTypeBigInt,8)Value = FileLength;
ConOpen();
CmdObjExecuteNonQuery();
ConClose();
跳转页面
ResponseRedirect("ShowAllx");
}
catch
{
}
}
2DataGrid控件绑定数据
程序代码
private void Page_Load(object sender, SystemEventArgs e)
{
string strCon = SystemConfigurationConfigurationSettingsAppSettings["DSN"];
SqlConnection con = new SqlConnection(strCon);
SqlDataAdapter da = new SqlDataAdapter("Select from ImageStore",con);
DataSet ds = new DataSet();
daFill(ds,"image");
dgShowDataSource = dsTables["image"]DefaultView;
dgShowDataBind();
}
3显示数据库数据
程序代码
private void Page_Load(object sender, SystemEventArgs e)
{
int ImgID = ConvertToInt32(RequestQueryString["ID"]); ID为ID
建立数据库链接
string strCon = SystemConfigurationConfigurationSettingsAppSettings["DSN"];
SqlConnection Con = new SqlConnection(strCon);
String SqlCmd = "SELECT FROM ImageStore WHERE ImageID = @ImageID";
SqlCommand CmdObj = new SqlCommand(SqlCmd, Con);
CmdObjParametersAdd("@ImageID", SqlDbTypeInt)Value = ImgID;
ConOpen();
SqlDataReader SqlReader = CmdObjExecuteReader();
SqlReaderRead();
ResponseContentType = (string)SqlReader["ImageContentType"];设定输出文件类型
输出图象文件二进制数制
ResponseOutputStreamWrite((byte[])SqlReader["ImageData"], 0, (int)SqlReader["ImageSize"]);
ResponseEnd();
也可以保存为图像
FileStream fs = new FileStream(@"C:\aaBMP", FileModeOpenOrCreate, FileAccessWrite);
fsWrite((byte[])SqlReader["ImageData"], 0,(int)SqlReader["ImageSize"]);
fsClose();
ConClose();
}
asp的:
ASP存入数据库源程序
写到数据库:<%
responsebuffer=true
formsize=requesttotalbytes
formdata=requestbinaryread(formsize)
bncrlf=chrB(13) & chrB(10)
divider=leftB(formdata,clng(instrb(formdata,bncrlf))-1)
datastart=instrb(formdata,bncrlf & bncrlf)+4
dataend=instrb(datastart+1,formdata,divider)-datastart
mydata=midb(formdata,datastart,dataend)
Dim Conn
Set Conn=ServerCreateObject("adodbconnection")
ConnOpen strConn
set rec=servercreateobject("ADODBrecordset")
recOpen "SELECT FROM images order by id desc",Conn,1,3
recaddnew
rec("images")appendchunk mydata
recupdate
recclose
set rec=nothing
set connGraph=nothing
%>
从数据库读:
<%
Dim Conn
Set Conn=ServerCreateObject("adodbconnection")
ConnOpen strConn
set rec=servercreateobject("ADODBrecordset")
strsql="select images from images where id=" & trim(request("id"))
recopen strsql,Conn,1,1
ResponseContentType = "img/"
ResponseBinaryWrite rec("images")getChunk(7500000)
%>
注:存数据库是以二进制存的,在读写时文本和只能分开保存。
用SqlDataReader读取数据,放到流中,Image对象从流加载数据到PictureBox。有三种方式读取,这三种方式都要求将SqlDataReader的默认行为设置为SequentialAccess。
1使用GetSqlBytes检索varbinary(max)数据:
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");
2使用GetSqlBinary检索数据:
reader = commandExecuteReader(CommandBehaviorCloseConnection);
while (readerRead())
SqlBinary binaryStream = readerGetSqlBinary(0);
3使用GetValue检索数据:
while (readerRead())
{
//如果从 varbinary(max) 列读数据
byte[] binaryData = (byte[])readerGetValue(0);
//如果从 varchar(max)或nvarchar(max) 列读数据
String stringData = (String)readerGetValue(1);
}
详细代码见我的“王一博客”danyaody
输出就行啦你现在会不会输出该字段的其它内容就如输出ID字段会吗?
输出ID字段的方法:
<%=rs("id")%>
那么你输出的字段呢
<%=rs("image")%>
当然你说只输出了字段的内容为什么不会显示该呢当然,你要加上一些HTML的标签语言才行方法:
<img src="<%=rs("image")%>">
这样就可以输出的字段了,并且能显示 试一试吧
读出二进制,转化成流,然后write到页面上 byte[] blob = userinfogetPhoto(); if(blob!=null){ responsereset(); responsesetContentType("image/"+dat);
以上就是关于delphi 从access数据库中读取图片全部的内容,包括:delphi 从access数据库中读取图片、如何向sql数据库中存取照片、如何从数据库中读取图片到picturebox中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)