1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > mysql long raw类型_ORACLE数据库中主要字段类型的读写例子(包括:Long Raw Blob)

mysql long raw类型_ORACLE数据库中主要字段类型的读写例子(包括:Long Raw Blob)

时间:2018-09-20 06:34:01

相关推荐

mysql long raw类型_ORACLE数据库中主要字段类型的读写例子(包括:Long Raw Blob)

这里我用的是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上加:

下一步→

和代码:

privatevoidbtunload_Click(objectsender,System.EventArgse)

{

btunload.Enabled=false;

//获得文件名称stringtempfilename=IoFile.PostedFile.FileName;

//注:loFile.PostedFile.FileName返回的是通过文件对话框选择的文件名,这之中包含了文件的目录信息tempfilename=Path.GetFileName(tempfilename);

if(tempfilename.Substring(tempfilename.Length-4,4)==".bmp")

{

//去掉目录信息,返回文件名称

//判断上传目录是否存在,不存在就建立stringtempDirectory="D:/WWWROOT/MYWEB/dbtest/Image/";

if(!Directory.Exists(tempDirectory))

Directory.CreateDirectory(tempDirectory);

//上传文件到服务器stringtempPath=tempDirectory+tempfilename;//得到上传目录及文件名称IoFile.PostedFile.SaveAs(tempPath);

Label1.Text="";

Session["filename"]=tempfilename;

}else

{

Label1.Text="错误的文件类型";

}btunload.Enabled=true;

/**//*'获得并显示上传文件的属性

FileName.Text=lstrFileName

'获得文件名称

FileType.Text=loFile.PostedFile.ContentType

'获得文件类型

FileLength.Text=cStr(loFile.PostedFile.ContentLength)

'获得文件长度

FileUploadForm.visible=false

AnswerMsg.visible=true

'显示上传文件属性

Endsub*/

}

INSERT:

privatevoidBtInsert_Click(objectsender,System.EventArgse)

{

OracleConnectionOcon=newOracleConnection("userid=cmes;datasource=mes;password=cmes");

Ocon.Open();

//OracleCommandOcom=newOracleCommand("insertintoc_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);OracleCommandOcom=newOracleCommand("insertintoc_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(newOracleParameter("emp_id",OracleType.Number));

Ocom.Parameters.Add(newOracleParameter("emp_no",OracleType.VarChar));

Ocom.Parameters.Add(newOracleParameter("emp_desc",OracleType.LongVarChar));

Ocom.Parameters.Add(newOracleParameter("emp_date",OracleType.DateTime));

Ocom.Parameters.Add(newOracleParameter("flag",OracleType.Char));

Ocom.Parameters.Add(newOracleParameter("emp_ic_mac",OracleType.Raw));

//Ocom.Parameters.Add(newOracleParameter("picture",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;

stringempdate=tbempdate.Text;//yyyymmddOcom.Parameters["emp_date"].Value=newDateTime(Convert.ToInt32(empdate.Substring(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.ExecuteNonQuery();

/**//*由与有字段long和blob一起,所以不能在一个insert语句中进行插入,单独insert是成功的

OracleConnectionOcon=newOracleConnection("userid=cmes;datasource=mes;password=cmes");

Ocon.Open();

OracleCommandOcom=newOracleCommand("insertintoc_emp1_t(EMP_ID,EMP_PICTURE)values(:emp_id,:picture)",Ocon);

Ocom.Parameters.Add(newOracleParameter("emp_id",OracleType.Number));

Ocom.Parameters.Add(newOracleParameter("picture",OracleType.Blob));

Ocom.Parameters["emp_id"].Value=Convert.ToDecimal(tbempid.Text);

FileStreamreader=newFileStream("D:/WWWROOT/MYWEB/dbtest/Image/002.bmp",FileMode.Open);//在iis中不用用“\”目录结构应该是“/”

byte[]tempimage=newbyte[reader.Length];

reader.Read(tempimage,0,tempimage.Length);

//OracleLobtempLob=OracleLob.Null;

//tempLob.BeginBatch(OracleLobOpenMode.ReadWrite);

//tempLob.Write(tempimage,0,tempimage.Length);

//tempLob.EndBatch();

reader.Close();

Ocom.Parameters["picture"].Size=tempimage.Length;

//tempimage.CopyTo(Ocom.Parameters["picture"].Value,0);

Ocom.Parameters["picture"].Value=tempimage;

Ocom.ExecuteNonQuery();*/stringmyfilename=Convert.ToString(Session["filename"]);

if(myfilename!="")

{

Ocom.Parameters.Clear();

mandText="updatec_emp1_tSETEMP_PICTURE=:PICTUREWHEREEMP_ID=:EMP_ID";

Ocom.Parameters.Add(newOracleParameter("EMP_ID",OracleType.Number));

Ocom.Parameters.Add(newOracleParameter("PICTURE",OracleType.Blob));

Ocom.Parameters["EMP_ID"].Value=Convert.ToDecimal(tbempid.Text);

FileStreamreader=newFileStream("D:/WWWROOT/MYWEB/dbtest/Image/"+myfilename,FileMode.Open);//在iis中不用用“\”目录结构应该是“/”byte[]tempimage=newbyte[reader.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:

privatevoidbtUpdate_Click(objectsender,System.EventArgse)

{

OracleConnectionOcon=newOracleConnection("userid=cmes;datasource=mes;password=cmes");

Ocon.Open();

OracleCommandOcom=newOracleCommand("UPDATEc_emp1_tSETEMP_ID=:emp_id,EMP_NO=:emp_no,EMP_DESC=:emp_desc,USED_DATE=:emp_date,EMP_IC_MAC=:emp_ic_mac,EMP_ADMIN_FLAG=:flagWHEREROWID=:MYROWID",Ocon);

Ocom.Parameters.Add(newOracleParameter("MYROWID",OracleType.RowId));

Ocom.Parameters.Add(newOracleParameter("emp_id",OracleType.Number));

Ocom.Parameters.Add(newOracleParameter("emp_no",OracleType.VarChar));

Ocom.Parameters.Add(newOracleParameter("emp_desc",OracleType.LongVarChar));

Ocom.Parameters.Add(newOracleParameter("emp_date",OracleType.DateTime));

Ocom.Parameters.Add(newOracleParameter("flag",OracleType.Char));

Ocom.Parameters.Add(newOracleParameter("emp_ic_mac",OracleType.Raw));

Ocom.Parameters["MYROWID"].Value=TBROWID.Text;

Ocom.Parameters["emp_id"].Value=Convert.ToDecimal(tbempid.Text);

Ocom.Parameters["emp_no"].Value=tbempno.Text;

Ocom.Parameters["emp_desc"].Value=tbempdesc.Text;

stringempdate=tbempdate.Text;//yyyymmddOcom.Parameters["emp_date"].Value=newDateTime(Convert.ToInt32(empdate.Substring(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.ExecuteNonQuery();

stringmyfilename=Convert.ToString(Session["filename"]);

if(myfilename!="")

{

Ocom.Parameters.Clear();

mandText="updatec_emp1_tSETEMP_PICTURE=:PICTUREWHEREEMP_ID=:EMP_ID";

Ocom.Parameters.Add(newOracleParameter("EMP_ID",OracleType.Number));

Ocom.Parameters.Add(newOracleParameter("PICTURE",OracleType.Blob));

Ocom.Parameters["EMP_ID"].Value=Convert.ToDecimal(tbempid.Text);

FileStreamreader=newFileStream("D:/WWWROOT/MYWEB/dbtest/Image/"+myfilename,FileMode.Open);//在iis中不用用“\”目录结构应该是“/”byte[]tempimage=newbyte[reader.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();

}SELECT(由于图片是直接向客户端输出,所以需要另一个页面来输入图片):

privatevoidbtselect_Click(objectsender,System.EventArgse)

{

if(TBROWID.Text.Length<18)

{

TBROWID.Text="请输入正确的ROWID";

return;

}OracleConnectionOcon=newOracleConnection("userid=cmes;datasource=mes;password=cmes");

Ocon.Open();

OracleCommandOcom=newOracleCommand("selectEMP_ID,EMP_NO,EMP_DESC,USED_DATE,EMP_IC_MAC,EMP_ADMIN_FLAG,EMP_PICTUREfromc_emp1_twhererowid=:emprowid",Ocon);

Ocom.Parameters.Add(newOracleParameter("emprowid",OracleType.RowId));

Ocom.Parameters["emprowid"].Value=TBROWID.Text;

OracleDataReaderreader=Ocom.ExecuteReader();

while(reader.Read())

{

if(!(reader.IsDBNull(0)))

tbempid.Text=Convert.ToString(reader.GetDecimal(0));

if(!(reader.IsDBNull(1)))

tbempno.Text=reader.GetString(1);

if(!(reader.IsDBNull(2)))

tbempdesc.Text=reader.GetString(2);

if(!(reader.IsDBNull(3)))

{

DateTimeDT=reader.GetDateTime(3);

tbempdate.Text=DT.ToString("yyyyMMdd");

}

if(!(reader.IsDBNull(4)))

{

byte[]temp=newbyte[4000];

reader.GetBytes(4,0,temp,0,4000);

tbicmac.Text=getraw(temp);

}elsetbicmac.Text="";

if(!(reader.IsDBNull(5)))

{

/**//*chartempflag=reader.GetChar(5);//不支持此方法

switch(tempflag)

{

case'1':

rb1.Checked=true;break;

case'2':

rb2.Checked=true;break;

default:

rb3.Checked=true;break;

}*/chartempflag=Convert.ToChar(reader.GetValue(5));

switch(tempflag)

{

case'1':

rb1.Checked=true;break;

case'2':

rb2.Checked=true;break;

default:

rb3.Checked=true;break;

}

}if(!(reader.IsDBNull(6)))

{

Label1.Text="";

}}reader.Close();

Ocon.Close();

}

webform3.aspx的程序:

privatevoidPage_Load(objectsender,System.EventArgse)

{

OracleConnectionOcon=newOracleConnection("userid=cmes;datasource=mes;password=cmes");

Ocon.Open();

OracleCommandOcom=newOracleCommand("selectEMP_PICTUREfromc_emp1_twhererowid=:emprowid",Ocon);

Ocom.Parameters.Add(newOracleParameter("emprowid",OracleType.RowId));

Ocom.Parameters["emprowid"].Value=Request.Params["ROWID"];

OracleDataReaderreader=Ocom.ExecuteReader();

while(reader.Read())

{

if(!(reader.IsDBNull(0)))

{

OracleLobtempBlob=reader.GetOracleLob(0);

byte[]tempbuffer=newbyte[tempBlob.Length];

//tempBlob.BeginBatch(OracleLobOpenMode.ReadWrite);会有错误ORA-22292:无法在没有事务处理的情况下以读写模式打开LOBtempBlob.BeginBatch();

tempBlob.Read(tempbuffer,0,tempbuffer.Length);

tempBlob.EndBatch();

//下面是把具体的文件保存出来BinaryWriterwriter=newBinaryWriter(newFileStream("D:/WWWROOT/MYWEB/dbtest/Image/temp.bmp",FileMode.Create));

for(inti=0;i

{

writer.Write(tempbuffer[i]);

}writer.Close();

//下面是直接把图片用流向客户端输出Response.BinaryWrite(tempbuffer);

}}reader.Close();

Ocon.Close();

}这些代码在2000下测试通过的,初次写代码有些凌乱,请大家多多提意见

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。