|
|
|
C# .NET สอบถามเรื่องการอัพเดท BLOB ลงใน Oracle ครับ โดยผมได้ดูจากบทความของคุณวินแล้วลองใช้กับ Oracle แล้วยังไม่สามารถ insert ลงได้ครับ |
|
|
|
|
|
|
|
ตอนอัพไฟล์ลง Oracle ฟ้องมาว่า " ORA-01036: illegal variable name/number "
Filed ที่ผมใช้อัพ BLOB ใน Oracle นั้นเป็น Type : LONG RAW ครับ พอจะช่วยผมได้หรือเปล่าครับ
|
|
|
|
|
Date :
2011-06-02 08:47:01 |
By :
l0gin |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
รู้สึกว่าโค้ดของคุณวินใช้ได้ครับ
แต่ว่า Type LONGRAW มันจะเก็บข้อมูลที่ใหญ่เป็น ขนาดรูปภาพผ่านเว็บไม่ได้
ผมเลยไปลองๆ เสิจจนเห็นได้ประมาณ
about the size restriction on long/long raw columns as
pl/sql - 32Kb
sql commands - 64Kb
sqlloader - 64Kb
ถ้าขนาดเกินตามนี้จะเก็บไม่ได้เหรอ T_T
|
|
|
|
|
Date :
2011-06-02 09:42:03 |
By :
l0gin |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เปลี่ยนไปใช้ Type แบบ BLOB ได้หรือเปล่าครับ
ตัวอย่างการ Insert ครับ
Code (C#)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.OracleClient;
namespace ASPNetBLOB
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnUpload_Click(object sender, EventArgs e)
{
this.pnlForm.Visible = false;
if (this.fUpload.HasFile == false | string.IsNullOrEmpty(this.txtName.Text))
{
this.lblStatus.Text = "Please input Name and Chooes File.";
}
else
{
//*** Read Binary Data ***'
byte[] imbByte = new byte[fUpload.PostedFile.InputStream.Length + 1];
fUpload.PostedFile.InputStream.Read(imbByte, 0, imbByte.Length);
//*** MimeType ***'
string ExtType = System.IO.Path.GetExtension(fUpload.PostedFile.FileName).ToLower();
string strMIME = null;
switch (ExtType)
{
case ".gif":
strMIME = "image/gif";
break;
case ".jpg":
case ".jpeg":
case ".jpe":
strMIME = "image/jpeg";
break;
case ".png":
strMIME = "image/png";
break;
default:
this.lblStatus.Text = "Invalid file type.";
return;
}
//*** Insert to Database ***'
OracleConnection objConn = new OracleConnection();
string strConnString = null;
string strSQL = null;
strConnString = "Data Source=TCDB;User Id=myuser;Password=mypassword;";
strSQL = "INSERT INTO files (Name,FilesName,FilesType) VALUES (:sName,:sFilesName,:sFilesType)";
objConn.ConnectionString = strConnString;
objConn.Open();
OracleCommand objCmd = new OracleCommand(strSQL, objConn);
objCmd.Parameters.Add(":sName", OracleType.VarChar).Value = this.txtName.Text;
objCmd.Parameters.Add(":sFilesName", OracleType.Blob).Value = imbByte;
objCmd.Parameters.Add(":sFilesType", OracleType.VarChar).Value = strMIME;
objCmd.ExecuteNonQuery();
objConn.Close();
objConn = null;
this.lblStatus.Text = "File Upload Successfully. Click <a href='ListPicture.aspx'>here</a> to view.";
}
}
}
}
|
|
|
|
|
Date :
2011-06-02 11:58:06 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณอีกครั้งครับ คุณวิน
|
|
|
|
|
Date :
2011-06-02 13:49:09 |
By :
l0gin |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คุณวินครับ
Parameters มันเก็บค่าได้เพียง 4000 ตัวอักษร แล้วแบบนี้จะต้องทำยังไงเหรอครับ
เพราะ Binary ไฟล์ ไฟล์นึง มีค่าเกิน 4k แน่ๆ อยู่แล้ว
|
|
|
|
|
Date :
2011-06-02 14:45:56 |
By :
l0gin |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เช็คจากตรงไหนถ้าได้ 4000 ครับ หรือไม่ก็ใช้การ Insert ผ่าน SQL ปกติก็ได้ครับ
Code (C#)
strSQL = "INSERT INTO files (Name,FilesName,FilesType) VALUES ('"+this.txtName.Text+"','"+imbByte+"','"+strMIME+"')";
|
|
|
|
|
Date :
2011-06-02 15:33:11 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Date :
2012-08-02 18:46:15 |
By :
yvonne |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|