.net2003中有OracleConnection,可用此处理,处理方法如下:
以下实例中的Command为OracleCommand,我是定义为存储过程。
1.获取BLOB:
public byte[] GetPersonPhotoByID( object id )
{
IDbCommand cmd = pb.SelectPhotoCommand();
try
{
((IDataParameter)cmd.Parameters[0]).Value = id;
if ( cmd.Connection.State != ConnectionState.Open)
cmd.Connection.Open();
cmd.ExecuteNonQuery();
OracleLob lob = (OracleLob)((OracleParameter)cmd.Parameters[1]).Value;
if( lob.IsNull )
return null;
byte[] imgData = new byte[lob.Length];
lob.Read( imgData,0,(int)lob.Length);
cmd.Connection.Close();
return imgData;
}
catch//(Exception ex)
{
cmd.Connection.Close();
return null;
}
}2.插入:
public void AddPersonPhotoByID( object id,byte[] photo )
{
OracleConnection conn = (OracleConnection)CommonData.DbOperator.Connection;
if( conn.State != ConnectionState.Open )
conn.Open();
OracleTransaction trans = (OracleTransaction)conn.BeginTransaction();
OracleCommand cmd = conn.CreateCommand();
cmd.Transaction = trans;
cmd.CommandText = "declare xx blob; begin dbms_lob.createtemporary(xx, false, 0); :tempblob := xx; end;";
cmd.Parameters.Add(new OracleParameter("tempblob", OracleType.Blob)).Direction = ParameterDirection.Output;
try
{
cmd.ExecuteNonQuery();
OracleLob tempLob = (OracleLob)cmd.Parameters[0].Value;
tempLob.BeginBatch(OracleLobOpenMode.ReadWrite);
tempLob.Write(photo,0,photo.Length);
tempLob.EndBatch();
cmd.Parameters.Clear();
cmd.CommandText = "SP_INSERT_A98";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new OracleParameter("v_ID", OracleType.Char,10)).Value = id;
cmd.Parameters.Add(new OracleParameter("v_PHOTO", OracleType.Blob)).Value = tempLob;
cmd.ExecuteNonQuery();
trans.Commit();
conn.Close();
}
catch//( Exception ex )
{
conn.Close();
trans.Rollback();
return;
}
}3.修改: public void ModifyPersonPhotoByID( object id,byte[] photo )
{
OracleConnection conn = (OracleConnection)CommonData.DbOperator.Connection;
if( conn.State != ConnectionState.Open )
conn.Open();
OracleTransaction trans = (OracleTransaction)conn.BeginTransaction();
OracleCommand cmd = conn.CreateCommand();
cmd.Transaction = trans;
cmd.CommandText = "declare xx blob; begin dbms_lob.createtemporary(xx, false, 0); :tempblob := xx; end;";
cmd.Parameters.Add(new OracleParameter("tempblob", OracleType.Blob)).Direction = ParameterDirection.Output;
try
{
cmd.ExecuteNonQuery();
OracleLob tempLob = (OracleLob)cmd.Parameters[0].Value;
tempLob.BeginBatch(OracleLobOpenMode.ReadWrite);
tempLob.Write(photo,0,photo.Length);
tempLob.EndBatch();
cmd.Parameters.Clear();
cmd.CommandText = "SP_UPDATE_A98";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new OracleParameter("v_ID", OracleType.Char,10)).Value = id;
cmd.Parameters.Add(new OracleParameter("v_PHOTO", OracleType.Blob)).Value = tempLob;
cmd.ExecuteNonQuery();
trans.Commit();
conn.Close();
}
catch//( Exception ex )
{
conn.Close();
trans.Rollback();
return;
}
}
以下实例中的Command为OracleCommand,我是定义为存储过程。
1.获取BLOB:
public byte[] GetPersonPhotoByID( object id )
{
IDbCommand cmd = pb.SelectPhotoCommand();
try
{
((IDataParameter)cmd.Parameters[0]).Value = id;
if ( cmd.Connection.State != ConnectionState.Open)
cmd.Connection.Open();
cmd.ExecuteNonQuery();
OracleLob lob = (OracleLob)((OracleParameter)cmd.Parameters[1]).Value;
if( lob.IsNull )
return null;
byte[] imgData = new byte[lob.Length];
lob.Read( imgData,0,(int)lob.Length);
cmd.Connection.Close();
return imgData;
}
catch//(Exception ex)
{
cmd.Connection.Close();
return null;
}
}2.插入:
public void AddPersonPhotoByID( object id,byte[] photo )
{
OracleConnection conn = (OracleConnection)CommonData.DbOperator.Connection;
if( conn.State != ConnectionState.Open )
conn.Open();
OracleTransaction trans = (OracleTransaction)conn.BeginTransaction();
OracleCommand cmd = conn.CreateCommand();
cmd.Transaction = trans;
cmd.CommandText = "declare xx blob; begin dbms_lob.createtemporary(xx, false, 0); :tempblob := xx; end;";
cmd.Parameters.Add(new OracleParameter("tempblob", OracleType.Blob)).Direction = ParameterDirection.Output;
try
{
cmd.ExecuteNonQuery();
OracleLob tempLob = (OracleLob)cmd.Parameters[0].Value;
tempLob.BeginBatch(OracleLobOpenMode.ReadWrite);
tempLob.Write(photo,0,photo.Length);
tempLob.EndBatch();
cmd.Parameters.Clear();
cmd.CommandText = "SP_INSERT_A98";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new OracleParameter("v_ID", OracleType.Char,10)).Value = id;
cmd.Parameters.Add(new OracleParameter("v_PHOTO", OracleType.Blob)).Value = tempLob;
cmd.ExecuteNonQuery();
trans.Commit();
conn.Close();
}
catch//( Exception ex )
{
conn.Close();
trans.Rollback();
return;
}
}3.修改: public void ModifyPersonPhotoByID( object id,byte[] photo )
{
OracleConnection conn = (OracleConnection)CommonData.DbOperator.Connection;
if( conn.State != ConnectionState.Open )
conn.Open();
OracleTransaction trans = (OracleTransaction)conn.BeginTransaction();
OracleCommand cmd = conn.CreateCommand();
cmd.Transaction = trans;
cmd.CommandText = "declare xx blob; begin dbms_lob.createtemporary(xx, false, 0); :tempblob := xx; end;";
cmd.Parameters.Add(new OracleParameter("tempblob", OracleType.Blob)).Direction = ParameterDirection.Output;
try
{
cmd.ExecuteNonQuery();
OracleLob tempLob = (OracleLob)cmd.Parameters[0].Value;
tempLob.BeginBatch(OracleLobOpenMode.ReadWrite);
tempLob.Write(photo,0,photo.Length);
tempLob.EndBatch();
cmd.Parameters.Clear();
cmd.CommandText = "SP_UPDATE_A98";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new OracleParameter("v_ID", OracleType.Char,10)).Value = id;
cmd.Parameters.Add(new OracleParameter("v_PHOTO", OracleType.Blob)).Value = tempLob;
cmd.ExecuteNonQuery();
trans.Commit();
conn.Close();
}
catch//( Exception ex )
{
conn.Close();
trans.Rollback();
return;
}
}
解决方案 »
- dll混淆之后如何在使用
- 用asp.net vs2005发电子邮件找回密码,一定要本机装了iis才行吗
- 急!!!高分!!!C#怎样做仪表??
- 我是新手,求在C#中的winform中如何ACCESS数据备份和还原功能.最好有完整代码
- write和writeline有什么区别啊 ?
- 如何获取连接指定端口的IP
- 问下大家网站请求的API应该看些什么资料
- ArrayList的存储数量问题
- 请问如何用C#在WindowsForm 中添加类似 webform中的表格的控件,最好是。net自己带的控件;另外说一下如何在datagrid中再加入如ComboBox,
- C#手机网站能转APP吗?
- 只有10分了,还得问问题,谢谢!如何得到subItem的位置,和长宽高?
- 从今天开始,水晶报表将受到来自纺织服装界的强力挑战!我水晶报表很难实现工艺单这一类格式的打印!其格式内详,有兴趣的进来看看,发表
http://support.microsoft.com/default.aspx?scid=kb;en-us;317043