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.EventArgs?e)
{
????????????
????????????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
'?顯示上傳文件屬性
End?sub*/
????????}
INSERT:
privatevoidBtInsert_Click(objectsender,?System.EventArgs?e)
{
????????????
????????????
????????????OracleConnection?Ocon=newOracleConnection("user?id=cmes;data?source=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=newOracleCommand("insert?into?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(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(new?OracleParameter("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是成功的
????????????
????????????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.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中不用用“\”目錄結構應該是“/”
????????????byte[]?tempimage?=?new?byte[reader.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.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();
????????????????Ocom.CommandText="update?c_emp1_t?SET?EMP_PICTURE?=?:PICTURE?WHERE?EMP_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);
????????????????FileStream?reader=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.EventArgs?e)
{
????????????OracleConnection?Ocon=newOracleConnection("user?id=cmes;data?source=mes;password=cmes");
????????????Ocon.Open();?
????
????????????OracleCommand?Ocom=newOracleCommand("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_mac,EMP_ADMIN_FLAG=?:flag?WHERE?ROWID?=?: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();
????????????????Ocom.CommandText="update?c_emp1_t?SET?EMP_PICTURE?=?:PICTURE?WHERE?EMP_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);
????????????????FileStream?reader=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.EventArgs?e)
{
if(TBROWID.Text.Length<18)
{
????????????????TBROWID.Text="請輸入正確的ROWID";
return;
????????????????
????????????}????????????OracleConnection?Ocon=newOracleConnection("user?id=cmes;data?source=mes;password=cmes");
????????????Ocon.Open();?
????????????OracleCommand?Ocom=newOracleCommand("select?EMP_ID,EMP_NO,EMP_DESC,USED_DATE,EMP_IC_MAC,EMP_ADMIN_FLAG,EMP_PICTURE?from?c_emp1_t?where?rowid?=?:emprowid",Ocon);
????????????Ocom.Parameters.Add(newOracleParameter("emprowid",OracleType.RowId));
????????????Ocom.Parameters["emprowid"].Value=TBROWID.Text;
????????????OracleDataReader?reader=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)))
{
????????????????????DateTime?DT=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);
????????????????}else????????????????????tbicmac.Text="";
if(!(reader.IsDBNull(5)))
{
/**//*char?tempflag?=?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.EventArgs?e)
{
????????????OracleConnection?Ocon=newOracleConnection("user?id=cmes;data?source=mes;password=cmes");
????????????Ocon.Open();?
????????????OracleCommand?Ocom=newOracleCommand("select?EMP_PICTURE?from?c_emp1_t?where?rowid?=?:emprowid",Ocon);
????????????Ocom.Parameters.Add(newOracleParameter("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=newbyte[tempBlob.Length];
//tempBlob.BeginBatch(OracleLobOpenMode.ReadWrite);會有錯誤ORA-22292:?無法在沒有事務處理的情況下以讀寫模式打開?LOBtempBlob.BeginBatch();
????????????????????tempBlob.Read(tempbuffer,0,tempbuffer.Length);
????????????????????tempBlob.EndBatch();
//下面是把具體的文件保存出來BinaryWriter?writer=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下測試通過的,初次寫代碼有些凌亂,請大家多多提意見
總結
以上是生活随笔為你收集整理的mysql long raw类型_ORACLE数据库中主要字段类型的读写例子(包括:Long、Raw、Blob)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js通过扫描枪快速扫码录入的功能实现(区
- 下一篇: mybatis中aplication.p