iriem
asked on
Insert an image in a interbase blob field with c# and easysoft odbc
I have a table with a blob field (named imagen) where I want to save an image. I have odbc drivers for interbase (easysoft).
This is my code:
System.Data.Odbc.OdbcConne ction conn = new System.Data.Odbc.OdbcConne ction("DSN =DBINMOV;U ID=sysdba; PWD=master key");
System.Data.Odbc.OdbcComma nd cmd = new System.Data.Odbc.OdbcComma nd();
cmd.Connection = conn;
cmd.CommandText = "INSERT INTO graficos (codigo, pos, descripcion, imagen, cartel) VALUES ('00004', 77, 'prueba', :imagen, 'NO')";
cmd.Parameters.Add(":image n", System.Data.Odbc.OdbcType. Binary);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
pictureBox1.Image.Save(ms, System.Drawing.Imaging.Ima geFormat.J peg);
cmd.Parameters[":imagen"]. Value = ms.GetBuffer();
conn.Open();
cmd.ExecuteNonQuery();
But my code doen't work! Same error always appear: ERROR [42S22] [easysoft] [Interbase] Dynamic SQL error, SQL error code = -206, Column unknown, IMAGEN
I'm sure than the column exists and I have written the columname correctly.
What I'm doing wrong?
This is my code:
System.Data.Odbc.OdbcConne
System.Data.Odbc.OdbcComma
cmd.Connection = conn;
cmd.CommandText = "INSERT INTO graficos (codigo, pos, descripcion, imagen, cartel) VALUES ('00004', 77, 'prueba', :imagen, 'NO')";
cmd.Parameters.Add(":image
System.IO.MemoryStream ms = new System.IO.MemoryStream();
pictureBox1.Image.Save(ms,
cmd.Parameters[":imagen"].
conn.Open();
cmd.ExecuteNonQuery();
But my code doen't work! Same error always appear: ERROR [42S22] [easysoft] [Interbase] Dynamic SQL error, SQL error code = -206, Column unknown, IMAGEN
I'm sure than the column exists and I have written the columname correctly.
What I'm doing wrong?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
It works!!! Thank you very much for your help!
Try OleDb as well as ODBC
public int Update(int ID, cImage objImage)
{
OleDbTransaction txn = (OleDbTransaction) this.m_htTransactions[ID];
m_cmdInsert.Transaction = txn;
OleDbParameter myParameter = new OleDbParameter("@Image", OleDbType.LongVarBinary, objImage.Image.Length);
myParameter.Value = objImage.Image;
m_cmdInsert.Parameters.Add
if(objImage.ImageID == sCodes.ID_Null)
{
m_cmdInsert.CommandText = "INSERT INTO Images ([Image]) VALUES (?)";
m_cmdInsert.ExecuteNonQuer
m_cmdGetIdentity.Transacti
objImage.ImageID = Convert.ToInt32(m_cmdGetId
}
else
{
m_cmdInsert.CommandText = "UPDATE Images SET [Image] = ? WHERE ImageID=" + objImage.ImageID.ToString(
m_cmdInsert.ExecuteNonQuer
}
m_cmdInsert.Parameters.Cle
return objImage.ImageID;
}