您的位置:首页 > 数据库 > Oracle

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下测试通过的,初次写代码有些凌乱,请大家多多提意见
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: