asp.net 向oracle中写入blob值 谁那有好的方法
我在网上查的一些方法都不行
应该注意些什么高手请指点一下
我在网上查的一些方法都不行
应该注意些什么高手请指点一下
解决方案 »
- ASP.NET 在Frameset一个frame中控制另外一个frame中的控件?
- 用的membership类,但是租来的空间里没有dbo权限怎么办?(请教高手...)
- 关于div的一个问题!!!
- 添加数据库遇到的问题
- 我通过查询得到的数据集,绑定到DATAGRID里有个删除控件,当我删除一个后怎样绑定剩下的数据集
- 请教关于防止下载ACCESS数据库的方法
- WebRequest读取带汉字的URL时。汉字的参数不能自动代入。怎么解决!
- 奇怪的错误
- 用户控件能控制外面的服务器控件吗?
- Request.Url 的域名被请求头里的 Host 替换怎么办
- VS的问题
- vs2008与2005在代码编写上有没有什么区别?
import oracle.sql.BLOB;
//import oracle.jdbc.driver.OracleResultSet;
import oracle.jdbc.OracleResultSet;
import java.io.*;
/**
* 将对象插入到数据库中,发生错误时不处理,抛出到调用层
* @param sID 数据记录的ID
* @param sFilename 要插入到BLOB对象的文件全路径
* @param iFlag 标识插入到哪个栏位 0:送出的数据 1:返回的数据
* @return 插入是否成功
* @throws Exception 含文件IO例外和数据库操作例外
*/
public boolean insertBlob(String sID,String sFilename,int iFlag) throws Exception {
boolean sReturn = false;
String sSQLNewRow = "";
String sSQLLockRow = "";
String sSQLUpdateRow = "";
ResultSet rs = null;
Statement stmt = connection.createStatement();
sSQLNewRow = "update t_jhsjcgb set SCSHJ=EMPTY_BLOB(),SCSJ=sysdate where ID=?";
sSQLLockRow = "select SCSHJ from t_jhsjcgb where ID=? for update";
sSQLUpdateRow = "update t_jhsjcgb set SCSHJ=? where ID=?";
FileInputStream fis = new FileInputStream(sFilename.trim());
CBlob blob = new CBlob(fis);
PreparedStatement pstmt = null;
connection.setAutoCommit(false);
pstmt = connection.prepareStatement(sSQLNewRow);
pstmt.setString(1,sID.trim());
pstmt.executeUpdate();
pstmt = connection.prepareStatement(sSQLLockRow);
pstmt.setString(1,sID.trim());
rs = pstmt.executeQuery();
if(rs.next()){
oracle.sql.BLOB dbBlob = (oracle.sql.BLOB)((oracle.jdbc.OracleResultSet)rs).getBlob(1);
pstmt = connection.prepareStatement(sSQLUpdateRow);
pstmt.setString(2,sID.trim());
dbBlob.putBytes(1,blob.getRaw());
pstmt.setBlob(1,dbBlob);
connection.commit();
sReturn = true;
}else{
sReturn = false;
}
connection.setAutoCommit(true);
pstmt.close();
rs.close();
blob = null;
fis.close();
return sReturn;
}
楼主参考下
//存
string ImgFName;
HttpPostedFile UpFile=UP_FILE.PostedFile;
FileLength=UpFile.ContentLength;//记录文件长度
try
{
if(FileLength==0)
{
cfun.alert(Response,"请选择要上传的图片");
}
else
{
Byte[] FileByteArray = new Byte[FileLength]; //图象文件临时储存Byte数组
Stream StreamObject = UpFile.InputStream; //建立数据流对像int pos=UpFile.FileName.LastIndexOf("\\");
ImgFName=UpFile.FileName.Substring(pos+1);StreamObject.Read(FileByteArray,0,FileLength);
cmd=new SqlCommand("InsImage",con);
cmd.CommandType=CommandType.StoredProcedure;
con.Open();
cmd.Parameters.Add(new SqlParameter("@ImageData",SqlDbType.Image)).Value=FileByteArray;
cmd.Parameters.Add(new SqlParameter("@ImageName",SqlDbType.NVarChar)).Value=ImgFName;
cmd.Parameters.Add(new SqlParameter("@ImageExplain",SqlDbType.NVarChar)).Value=txtBody.Text;
cmd.Parameters.Add(new SqlParameter("@ImageGroup",SqlDbType.NVarChar)).Value=txtImgGup.Text;
cmd.Parameters.Add(new SqlParameter("@ImageDate",SqlDbType.NVarChar)).Value=labDate.Text;
cmd.ExecuteNonQuery();
cfun.alert(Response,"上传成功!","upimage.aspx");
con.Close();
}
}
catch(Exception ex)
{
cfun.alert(Response,"'"+ex.Message+"'");
}//////////////////////
取
con=new SqlConnection(ConfigurationSettings.AppSettings["ConStr"]);
SimgId=Request.QueryString["ImgId"].ToString();
Sqlstr="select ImageData from ImageStore where ImgId='"+SimgId+"'";
if(!IsPostBack)
{
con.Open();
cmd=new SqlCommand(Sqlstr,con);
dr=cmd.ExecuteReader();
while(dr.Read())
{
Response.BinaryWrite((byte[])dr["ImageData"]);
}
con.Close();