佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 937|回复: 4

BLOB::帮帮我看看那里出错了[已决解]

[复制链接]
发表于 23-9-2008 09:11 AM | 显示全部楼层 |阅读模式
谢谢各位大大给我的意见
我找到决解方法了:

OpenConn()
Dim intFileNameLength As Integer, bytData() As Byte
Dim objStream As System.IO.Stream
Dim strFileNamePath As String
Dim strFileNameOnly As String
intFileNameLength = myFile.PostedFile.ContentLength
ReDim bytData(intFileNameLength)
objStream = myFile.PostedFile.InputStream
objStream.Read(bytData, 0, intFileNameLength)
strFileNamePath = myFile.PostedFile.FileName
intFileNameLength = InStr(1, StrReverse(strFileNamePath), "\")
strFileNameOnly = Mid(strFileNamePath, (Len(strFileNamePath) - intFileNameLength) + 2)
Dim cmd As OracleCommand
cmd =
New OracleCommand("INSERT INTO test (filename, filesave) Values ('" + strFileNameOnly + "',:1)", myCN)
cmd.CommandType = CommandType.Text
Dim param As OracleParameter = cmd.Parameters.Add("filesave", OracleDbType.Blob) ' Bind the parameter as OracleDbType.Blob to command for inserting image
param.Direction = ParameterDirection.Input
param.Value = bytData
' Assign Byte Array to Oracle Parameter
cmd.ExecuteNonQuery()
CloseConn()




----------------------------------------------------------------------------------------------------------------------------------------------
我想要用BLOB 来 insert image 去我的database
但是现在我遇到的一个问题,决解不到,希望各位大大能帮帮忙
Error:
An unhandled exception of type ' System.Data.OleDb.OleDbException' occurred in system.data.dll

以下是我的 code:


Private functionOpenConn() As Boolean
myCN = New OleDb.OleDbConnection
Dim sC" border=0 smilieid="31">assword=123;Data Source=test" '
myCN.Connectionstring= sConnstring
myCN.Open()
OpenConn = True
  
End function
__________________________________________________ ______________
Private sub CloseConn()
If myCN.State = ConnectionState.Open Then
myCN.Close()
End If
End sub
__________________________________________________ _______________
Private sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim openDlg As OpenFileDialog = New OpenFileDialog
openDlg.Filter = "All Files|*.*|Bitmaps|*.bmp|GIFs|*.gif|JPEGs|*.jpg"
Dim filter As string= openDlg.Filter
openDlg.Title = "Open a Bitmap File"
If (openDlg.ShowDialog() = DialogResult.OK) Then
curFileName = openDlg.FileName
TextBox1.Text = curFileName
With PictureBox1
.Image = Image.FromFile(openDlg.FileName)
.SizeMode = PictureBoxSizeMode.CenterImage
  
End With
  
End If
End sub
__________________________________________________ ______________
Private sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  
OpenConn()
  
Dim cmd As OleDbCommand
Dim fs As FileStream
  
fs = New FileStream(curFileName, FileMode.Open, FileAccess.Read) ' Read a bitmap contents in a stream
Dim b(fs.Length - 1) As Byte
fs.Read(b, 0, b.Length)
fs.Close()
  
cmd = New OleDbCommand("INSERT INTO test (filename, filesave) Values ('" + TextBox1.Text.Substring(TextBox1.Text.LastIndexOf( "\") + 1+ "','?')", myCN)
cmd.Parameters.Add("filesave", OleDbType.VarBinary)
cmd.Parameters.Item(0).Value() = b
cmd.ExecuteNonQuery()
CloseConn()
  
MsgBox("New Record inserted.")
End
End sub
__________________________________________________

exception 是出在cmd.ExecuteNonQuery()
我怀疑是command text那边出问题,但我不会改
请指教,谢谢。。

[ 本帖最后由 心的太平洋 于 26-9-2008 05:40 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 23-9-2008 09:34 AM | 显示全部楼层
cmd = New OleDbCommand("INSERT INTO test (filename, filesave) Values ('" + TextBox1.Text.Substring(TextBox1.Text.LastIndexOf( "\" + 1+ "','?filesave')", myCN)
cmd.Parameters.Add("?filesave", OleDbType.VarBinary)


是不是没有放Parameter Name?
回复

使用道具 举报

 楼主| 发表于 23-9-2008 10:05 AM | 显示全部楼层

回复 2# eddom 的帖子

先谢 eddom的回复。。
我试过了, 还是不能。。
一样的error :
An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in system.data.dll
我在window command immediately那边打了
?cmd.commandtext
得到的答案是:
INSERT INTO test (filename, filesave) Values ('pplCommunication.jpg','?filesave')
回复

使用道具 举报

发表于 23-9-2008 10:42 AM | 显示全部楼层
public Byte[] AddImage()
        {
            OpenFileDialog OFD = new OpenFileDialog();
            OFD.Multiselect = false;

            if (OFD.ShowDialog() == DialogResult.OK)
            {
                FileStream FS = new FileStream(OFD.FileName, FileMode.Open, FileAccess.Read);
                FileInfo Info = new FileInfo(OFD.FileName);
                Byte[] FileBytes = new Byte[System.Convert.ToInt32(Info.Length) + 1];

                BinaryReader Reader = new BinaryReader(FS);
                FileBytes = Reader.ReadBytes(System.Convert.ToInt32(Info.Length));

                FS.Close();
                Reader.Close();

                return FileBytes;
            }
            else
            {
                return null;
            }
        }

        public void Save(Byte[] FileBytes)
        {
            Guid FileID = Guid.NewGuid();
            Database DB = DatabaseFactory.CreateDatabase("ConnectionString");
            String SQL = "INSERT INTO FileRecord (ID, FileStream) VALUES(@FileID, @FileStream)";
            DbConnection Conn = DB.CreateConnection();
            DbCommand Cmd = DB.GetSqlStringCommand(SQL);
            DB.AddInParameter(Cmd, "@FileID", DbType.Guid, FileID);
            DB.AddInParameter(Cmd, "@FileStream", DbType.Binary, FileBytes);
            Cmd.Connection = Conn;

            try
            {   
                Conn.Open();
                Cmd.ExecuteNonQuery();
                Conn.Close();
                Conn.Dispose();
            }
            catch (Exception Ex)
            {
                MessageBox.Show(Ex.Message);
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Byte[] FileBytes = AddImage();
            Save(FileBytes);
        }

我试了,能用,但是发现Binary data type 最高是 8000, Insert 了一各21.3KB 的 file, return error, 1.3KB 的 notepad file 反而没问题
回复

使用道具 举报

 楼主| 发表于 23-9-2008 11:45 AM | 显示全部楼层
明白!!
原来问题是我upload 了太大的file,
谢谢,eddom
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 23-12-2025 12:47 PM , Processed in 0.133299 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表