收藏 分享(赏)

ORACLE数据库中主要字段类型的读写例子(包括:Long、Raw、Blob).docx

上传人:dzzj200808 文档编号:2948220 上传时间:2018-09-30 格式:DOCX 页数:9 大小:41.95KB
下载 相关 举报
ORACLE数据库中主要字段类型的读写例子(包括:Long、Raw、Blob).docx_第1页
第1页 / 共9页
ORACLE数据库中主要字段类型的读写例子(包括:Long、Raw、Blob).docx_第2页
第2页 / 共9页
ORACLE数据库中主要字段类型的读写例子(包括:Long、Raw、Blob).docx_第3页
第3页 / 共9页
ORACLE数据库中主要字段类型的读写例子(包括:Long、Raw、Blob).docx_第4页
第4页 / 共9页
ORACLE数据库中主要字段类型的读写例子(包括:Long、Raw、Blob).docx_第5页
第5页 / 共9页
点击查看更多>>
资源描述

1、ORACLE 数据库中主要字段类型的读写例子(包括:Long、Raw、Blob)这里我用的是 ORACLE9I, 建立了表 C_EMP1_T,结构如下:create table C_EMP1_T(EMP_ID NUMBER(20) not null, /用户 IDEMP_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/UP

2、DATE/SELECT 的代码分别如下(DELETE 比较简单就省略了,其中SELECT 和 UPDATE 的条件都是记录的 rowid):首先 BLOB 字段是存图片的,所以有一个过程是把图片传到服务器上:先在 aspx 上加:下一步和代码:private void btunload_Click(object sender, System.EventArgs e)btunload.Enabled = false;/获得文件名称 string tempfilename = IoFile.PostedFile.FileName;/注: loFile.PostedFile.FileName 返回的

3、是 通过文件对话框选择的文件名,这之中包含了文件的目录信息tempfilename = Path.GetFileName ( tempfilename);if (tempfilename.Substring(tempfilename.Length-4,4) = “.bmp“)/去掉目录信息,返回文件名称/判断上传目录是否存在,不存在就建立 string tempDirectory = “D:/WWWROOT/MYWEB/dbtest/Image/“;if ( ! Directory.Exists ( tempDirectory ) ) Directory.CreateDirectory ( t

4、empDirectory ) ;/上传文件到服务器 string tempPath = tempDirectory+tempfilename;/得到上传目录及文件名称 IoFile.PostedFile.SaveAs ( tempPath );Label1.Text = “;Session“filename“ = tempfilename;elseLabel1.Text = “错误的文件类型“;btunload.Enabled = true;/* 获得并显示上传文件的属性 FileName.Text = lstrFileName 获得文件名称FileType.Text = loFile.Pos

5、tedFile.ContentType 获得文件类型FileLength.Text = cStr ( loFile.PostedFile.ContentLength ) 获得文件长度FileUploadForm.visible = false AnswerMsg.visible = true 显示上传文件属性End sub */INSERT:private void BtInsert_Click(object sender, System.EventArgs e)OracleConnection Ocon = new OracleConnection(“user id=cmes;data so

6、urce=mes;password=cmes“);Ocon.Open(); /OracleCommand Ocom = new OracleCommand(“insert into c_emp1_t (EMP_ID,EMP_NO,EMP_DESC,USED_DATE,EMP_IC_MAC,EMP_ADMIN_FLAG,EMP_PICTURE)values(:emp_id,:emp_no,:emp_desc,:emp_date,:emp_ic_mac,:flag,:picture)“,Ocon);OracleCommand Ocom = new OracleCommand(“insert int

7、o c_emp1_t (EMP_ID,EMP_NO,EMP_DESC,USED_DATE,EMP_IC_MAC,EMP_ADMIN_FLAG)values(:emp_id,:emp_no,:emp_desc,:emp_date,:emp_ic_mac,:flag)“,Ocon);Ocom.Parameters.Add(new OracleParameter(“emp_id“,OracleType.Number);Ocom.Parameters.Add(new OracleParameter(“emp_no“,OracleType.VarChar);Ocom.Parameters.Add(new

8、 OracleParameter(“emp_desc“,OracleType.LongVarChar);Ocom.Parameters.Add(new OracleParameter(“emp_date“,OracleType.DateTime);Ocom.Parameters.Add(new OracleParameter(“flag“,OracleType.Char);Ocom.Parameters.Add(new OracleParameter(“emp_ic_mac“,OracleType.Raw);/Ocom.Parameters.Add(new OracleParameter(“p

9、icture“,OracleType.Blob);Ocom.Parameters“emp_id“.Value = Convert.ToDecimal(tbempid.Text);Ocom.Parameters“emp_no“.Value = tbempno.Text;Ocom.Parameters“emp_desc“.Value = tbempdesc.Text;string empdate = tbempdate.Text;/ yyyymmddOcom.Parameters“emp_date“.Value = new DateTime(Convert.ToInt32(empdate.Subs

10、tring(0,4),Convert.ToInt32(empdate.Substring(4,2),Convert.ToInt32(empdate.Substring(6,2) );if (rb1.Checked) Ocom.Parameters“flag“.Value = 1;if (rb2.Checked) Ocom.Parameters“flag“.Value = 2;if (rb3.Checked) Ocom.Parameters“flag“.Value = 3;Ocom.Parameters“emp_ic_mac“.Value = setraw(tbicmac.Text); Ocom

11、.ExecuteNonQuery();/*由与有字段 long 和 blob 一起,所以不能在一个 insert 语句中进行插入,单独 insert 是成功的OracleConnection Ocon = new OracleConnection(“user id=cmes;data source=mes;password=cmes“);Ocon.Open(); OracleCommand Ocom = new OracleCommand(“insert into c_emp1_t (EMP_ID,EMP_PICTURE)values(:emp_id,:picture)“,Ocon);Ocom

12、.Parameters.Add(new OracleParameter(“emp_id“,OracleType.Number);Ocom.Parameters.Add(new OracleParameter(“picture“,OracleType.Blob);Ocom.Parameters“emp_id“.Value = Convert.ToDecimal(tbempid.Text);FileStream reader = new FileStream(“D:/WWWROOT/MYWEB/dbtest/Image/002.bmp“,FileMode.Open);/在 iis 中不用用 “”目

13、录结构应该是“/”byte tempimage = new bytereader.Length;reader.Read(tempimage,0,tempimage.Length);/OracleLob tempLob=OracleLob.Null;/tempLob.BeginBatch(OracleLobOpenMode.ReadWrite);/tempLob.Write(tempimage,0,tempimage.Length);/tempLob.EndBatch();reader.Close();Ocom.Parameters“picture“.Size = tempimage.Lengt

14、h;/tempimage.CopyTo(Ocom.Parameters“picture“.Value,0);Ocom.Parameters“picture“.Value = tempimage;Ocom.ExecuteNonQuery();*/string myfilename = Convert.ToString(Session“filename“);if (myfilename != “)Ocom.Parameters.Clear();Ocom.CommandText = “update c_emp1_t SET EMP_PICTURE = :PICTURE WHERE EMP_ID= :

15、EMP_ID “;Ocom.Parameters.Add(new OracleParameter(“EMP_ID“,OracleType.Number);Ocom.Parameters.Add(new OracleParameter(“PICTURE“,OracleType.Blob);Ocom.Parameters“EMP_ID“.Value = Convert.ToDecimal(tbempid.Text);FileStream reader = new FileStream(“D:/WWWROOT/MYWEB/dbtest/Image/“+myfilename,FileMode.Open

16、);/在 iis 中不用用“” 目录结构应该是“/”byte tempimage = new bytereader.Length;reader.Read(tempimage,0,tempimage.Length);reader.Close();Ocom.Parameters“PICTURE“.Size = tempimage.Length;Ocom.Parameters“PICTURE“.Value = tempimage;Ocom.ExecuteNonQuery();Session“filename“ = “;Ocon.Close();UPDATE:private void btUpdate

17、_Click(object sender, System.EventArgs e)OracleConnection Ocon = new OracleConnection(“user id=cmes;data source=mes;password=cmes“);Ocon.Open(); OracleCommand Ocom = new OracleCommand(“UPDATE c_emp1_t SET EMP_ID= :emp_id,EMP_NO= :emp_no,EMP_DESC= :emp_desc,USED_DATE= :emp_date,EMP_IC_MAC= :emp_ic_ma

18、c,EMP_ADMIN_FLAG= :flag WHERE ROWID = :MYROWID“,Ocon);Ocom.Parameters.Add(new OracleParameter(“MYROWID“,OracleType.RowId);Ocom.Parameters.Add(new OracleParameter(“emp_id“,OracleType.Number);Ocom.Parameters.Add(new OracleParameter(“emp_no“,OracleType.VarChar);Ocom.Parameters.Add(new OracleParameter(“

19、emp_desc“,OracleType.LongVarChar);Ocom.Parameters.Add(new OracleParameter(“emp_date“,OracleType.DateTime);Ocom.Parameters.Add(new OracleParameter(“flag“,OracleType.Char);Ocom.Parameters.Add(new OracleParameter(“emp_ic_mac“,OracleType.Raw);Ocom.Parameters“MYROWID“.Value = TBROWID.Text;Ocom.Parameters

20、“emp_id“.Value = Convert.ToDecimal(tbempid.Text);Ocom.Parameters“emp_no“.Value = tbempno.Text;Ocom.Parameters“emp_desc“.Value = tbempdesc.Text;string empdate = tbempdate.Text;/ yyyymmddOcom.Parameters“emp_date“.Value = new DateTime(Convert.ToInt32(empdate.Substring(0,4),Convert.ToInt32(empdate.Subst

21、ring(4,2),Convert.ToInt32(empdate.Substring(6,2) );if (rb1.Checked) Ocom.Parameters“flag“.Value = 1;if (rb2.Checked) Ocom.Parameters“flag“.Value = 2;if (rb3.Checked) Ocom.Parameters“flag“.Value = 3;Ocom.Parameters“emp_ic_mac“.Value = setraw(tbicmac.Text); Ocom.ExecuteNonQuery();string myfilename = C

22、onvert.ToString(Session“filename“);if (myfilename != “)Ocom.Parameters.Clear();Ocom.CommandText = “update c_emp1_t SET EMP_PICTURE = :PICTURE WHERE EMP_ID= :EMP_ID “;Ocom.Parameters.Add(new OracleParameter(“EMP_ID“,OracleType.Number);Ocom.Parameters.Add(new OracleParameter(“PICTURE“,OracleType.Blob)

23、;Ocom.Parameters“EMP_ID“.Value = Convert.ToDecimal(tbempid.Text);FileStream reader = new FileStream(“D:/WWWROOT/MYWEB/dbtest/Image/“+myfilename,FileMode.Open);/在 iis 中不用用“” 目录结构应该是“/”byte tempimage = new bytereader.Length;reader.Read(tempimage,0,tempimage.Length);reader.Close();Ocom.Parameters“PICTU

24、RE“.Size = tempimage.Length;Ocom.Parameters“PICTURE“.Value = tempimage;Ocom.ExecuteNonQuery();Session“filename“ = “;Ocon.Close();SELECT(由于图片是直接向客户端输出,所以需要另一个页面来输入图片):private void btselect_Click(object sender, System.EventArgs e)if (TBROWID.Text.Length “;reader.Close();Ocon.Close();webform3.aspx 的程序:

25、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 OracleParam

26、eter(“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 bytetempBlob.Length;/tempBlob.BeginBatch(OracleLobOpe

27、nMode.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;itempbuffer.Length;i+)writer.Write(tempbufferi);writer.Close();/下面是直接把图片用流向客户端输出Response.BinaryWrite(tempbuffer);reader.Close();Ocon.Close();这些代码在 2000 下测试通过的,初次写代码有些凌乱,请大家多多提意见

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 专业基础教材

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报