ORACLE数据库中主要字段类型的读写例子(包括:Long、Raw、Blob)
2004-10-15 10:08
597 查看
这里我用的是ORACLE9I, 建立了表C_EMP1_T,结构如下:
create table C_EMP1_T
(
EMP_ID NUMBER(20) not null, //用户ID
EMP_NO VARCHAR2(20), //用户编号
EMP_DESC LONG, //用户简历
USED_DATE DATE, //注册日期
EMP_IC_MAC RAW(50), //用户IC卡的MAC号
EMP_ADMIN_FLAG CHAR(1), //管理员标志
EMP_PICTURE BLOB //用户图像
)
其中INSERT/UPDATE/SELECT的代码分别如下(DELETE比较简单就省略了,其中SELECT和UPDATE的条件都是记录的rowid):
首先BLOB字段是存图片的,所以有一个过程是把图片传到服务器上:
先在aspx上加:
<form id="Form1" enctype="multipart/form-data" method="post" runat="server">
<input id="IoFile" runat="server" type="file"> <FONT face="宋体">下一步→</FONT>
<asp:Button id="btunload" runat="server" Text="上传"></asp:Button>
</form>
和代码:
private void btunload_Click(object sender, System.EventArgs e)
private void BtInsert_Click(object sender, System.EventArgs e)
private void btUpdate_Click(object sender, System.EventArgs e)
private void btselect_Click(object sender, System.EventArgs e)
private void Page_Load(object sender, System.EventArgs e)
OracleConnection Ocon = new OracleConnection("user id=cmes;data source=mes;password=cmes");
Ocon.Open();
OracleCommand Ocom = new OracleCommand("select EMP_PICTURE from c_emp1_t where rowid = :emprowid",Ocon);
Ocom.Parameters.Add(new OracleParameter("emprowid",OracleType.RowId));
Ocom.Parameters["emprowid"].Value = Request.Params["ROWID"];
OracleDataReader reader = Ocom.ExecuteReader();
while (reader.Read())
if (!(reader.IsDBNull(0)))
OracleLob tempBlob = reader.GetOracleLob(0);
byte[] tempbuffer = new byte[tempBlob.Length];
//tempBlob.BeginBatch(OracleLobOpenMode.ReadWrite);会有错误ORA-22292: 无法在没有事务处理的情况下以读写模式打开 LOB
tempBlob.BeginBatch();
tempBlob.Read(tempbuffer,0,tempbuffer.Length);
tempBlob.EndBatch();
//下面是把具体的文件保存出来
BinaryWriter writer = new BinaryWriter(new FileStream("D:/WWWROOT/MYWEB/dbtest/Image/temp.bmp",FileMode.Create));
for(int i=0;i<tempbuffer.Length;i++)
writer.Write(tempbuffer[i]);
}
writer.Close();
//下面是直接把图片用流向客户端输出
Response.BinaryWrite(tempbuffer);
}
}
reader.Close();
Ocon.Close();
}这些代码在2000下测试通过的,初次写代码有些凌乱,请大家多多提意见
create table C_EMP1_T
(
EMP_ID NUMBER(20) not null, //用户ID
EMP_NO VARCHAR2(20), //用户编号
EMP_DESC LONG, //用户简历
USED_DATE DATE, //注册日期
EMP_IC_MAC RAW(50), //用户IC卡的MAC号
EMP_ADMIN_FLAG CHAR(1), //管理员标志
EMP_PICTURE BLOB //用户图像
)
其中INSERT/UPDATE/SELECT的代码分别如下(DELETE比较简单就省略了,其中SELECT和UPDATE的条件都是记录的rowid):
首先BLOB字段是存图片的,所以有一个过程是把图片传到服务器上:
先在aspx上加:
<form id="Form1" enctype="multipart/form-data" method="post" runat="server">
<input id="IoFile" runat="server" type="file"> <FONT face="宋体">下一步→</FONT>
<asp:Button id="btunload" runat="server" Text="上传"></asp:Button>
</form>
和代码:
private void btunload_Click(object sender, System.EventArgs e)
private void BtInsert_Click(object sender, System.EventArgs e)
private void btUpdate_Click(object sender, System.EventArgs e)
private void btselect_Click(object sender, System.EventArgs e)
private void Page_Load(object sender, System.EventArgs e)
OracleConnection Ocon = new OracleConnection("user id=cmes;data source=mes;password=cmes");
Ocon.Open();
OracleCommand Ocom = new OracleCommand("select EMP_PICTURE from c_emp1_t where rowid = :emprowid",Ocon);
Ocom.Parameters.Add(new OracleParameter("emprowid",OracleType.RowId));
Ocom.Parameters["emprowid"].Value = Request.Params["ROWID"];
OracleDataReader reader = Ocom.ExecuteReader();
while (reader.Read())
if (!(reader.IsDBNull(0)))
OracleLob tempBlob = reader.GetOracleLob(0);
byte[] tempbuffer = new byte[tempBlob.Length];
//tempBlob.BeginBatch(OracleLobOpenMode.ReadWrite);会有错误ORA-22292: 无法在没有事务处理的情况下以读写模式打开 LOB
tempBlob.BeginBatch();
tempBlob.Read(tempbuffer,0,tempbuffer.Length);
tempBlob.EndBatch();
//下面是把具体的文件保存出来
BinaryWriter writer = new BinaryWriter(new FileStream("D:/WWWROOT/MYWEB/dbtest/Image/temp.bmp",FileMode.Create));
for(int i=0;i<tempbuffer.Length;i++)
writer.Write(tempbuffer[i]);
}
writer.Close();
//下面是直接把图片用流向客户端输出
Response.BinaryWrite(tempbuffer);
}
}
reader.Close();
Ocon.Close();
}这些代码在2000下测试通过的,初次写代码有些凌乱,请大家多多提意见
相关文章推荐
- 操作Oracle数据库实现上传图片到Blob类型的字段出现的问题
- 使用Spring+Hibernate实现Oracle数据库BlOB数据类型的读写
- java 读写oracle中LONG类型的字段 [还未自己验证]
- 操作Oracle数据库实现上传图片到Blob类型的字段
- 访问oracle数据库Long类型字段遇到的问题!
- Oracle long raw 类型字段读取问题
- 操作Oracle数据库实现上传图片到Blob类型的字段出现的问题
- Oracle:在程序中对RAW类型字段的读写
- Hibernate读写Clob和Blob类型字段
- oracle数据库中字段值的类型blob和clob是什么和两者的区别
- postgresql数据类型之LONG CLOB NCLOB BFILE BLOB LONG RAW
- hibernate对oracle数据库CLOB、blob类型字段处理原则
- Oracle数据库Date类型字段读写经验
- oracle数据库中将varchar2类型的字段改成clob类型 先将varchar2类型的字段改成long类型的,然后再将long类型改成clob类型
- 操作Oracle数据库实现上传图片到Blob类型的字段出现的问题
- java 操作MySQL数据库的一个例子,包括表字段,类型,编码格式,表的所有值读取
- Hibernate读写Clob和Blob类型字段
- Hibernate读写Clob和Blob类型字段
- 使用Spring+Hibernate实现Oracle数据库BlOB数据类型的读写
- Oracle数据库Date类型字段读写经验、查看Oracle字符集及修改字符集