将图像保存到 sql 服务器 2008 数据库问题?
Saving an image into sql server 2008 database issue?
我在尝试从 C# 应用程序保存图像时遇到了以下错误消息。到 SQL Server 2008 数据库。
请注意,加载工作正常,问题出在保存时。
请帮忙??
Failed to convert parameter value from picturebox to a Byte[]
保存图片的代码
private void saveLogo()
{
SqlConnection conn = new SqlConnection(dbcon.ReturnConnection());
try
{
SqlCommand sqlCommand1 = conn.CreateCommand();
sqlCommand1.CommandText = "INSERT INTO OrgLogo(ID,LogoName,Picture) values(@ID,@Name,@Picture)";
conn.Open();
if (sqlCommand1.Parameters.Count == 0)
{
sqlCommand1.Parameters.Add("@ID", System.Data.SqlDbType.Int, 4);
sqlCommand1.Parameters.Add("@Name", System.Data.SqlDbType.VarChar, 50);
sqlCommand1.Parameters.Add("@Picture", System.Data.SqlDbType.Image);
}
sqlCommand1.Parameters["@ID"].Value =Convert.ToInt32( editID.Text);
sqlCommand1.Parameters["@Name"].Value = editName.Text;
sqlCommand1.Parameters["@Picture"].Value = pictureBox1;
sqlCommand1.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
conn.Close();
}
}
打开图片文件的代码
protected void LoadLogoPic()
{
this.openFileDialog2.ShowDialog();
string strFn = this.openFileDialog2.FileName;
this.pictureBox1.Image = Image.FromFile(strFn);
this.openFileDialog2.Filter = "All Files|*.*|BMP Files|*.bmp|JPG Files|*.jpg";
FileInfo fiImage = new FileInfo(strFn);
m_lImageFileLength = fiImage.Length;
FileStream fs = new FileStream(strFn, FileMode.Open, FileAccess.Read, FileShare.Read);
m_barrImg = new byte[Convert.ToInt32(this.m_lImageFileLength)];
int iBytesRead = fs.Read(m_barrImg, 0, Convert.ToInt32(this.m_lImageFileLength));
fs.Close();
}
试试这个方法;
Image img = picturebox1.Image();
byte[] arr;
ImageConverter converter = new ImageConverter();
arr=(byte[])converter.ConvertTo(img, typeof(byte[]));
command.CommandText = "INSERT INTO ImagesTable (Image) VALUES('" + arr + "')";
command.CommandType = CommandType.Text;
command.ExecuteNonQuery();
我在尝试从 C# 应用程序保存图像时遇到了以下错误消息。到 SQL Server 2008 数据库。
请注意,加载工作正常,问题出在保存时。
请帮忙??
Failed to convert parameter value from picturebox to a Byte[]
保存图片的代码
private void saveLogo()
{
SqlConnection conn = new SqlConnection(dbcon.ReturnConnection());
try
{
SqlCommand sqlCommand1 = conn.CreateCommand();
sqlCommand1.CommandText = "INSERT INTO OrgLogo(ID,LogoName,Picture) values(@ID,@Name,@Picture)";
conn.Open();
if (sqlCommand1.Parameters.Count == 0)
{
sqlCommand1.Parameters.Add("@ID", System.Data.SqlDbType.Int, 4);
sqlCommand1.Parameters.Add("@Name", System.Data.SqlDbType.VarChar, 50);
sqlCommand1.Parameters.Add("@Picture", System.Data.SqlDbType.Image);
}
sqlCommand1.Parameters["@ID"].Value =Convert.ToInt32( editID.Text);
sqlCommand1.Parameters["@Name"].Value = editName.Text;
sqlCommand1.Parameters["@Picture"].Value = pictureBox1;
sqlCommand1.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
conn.Close();
}
}
打开图片文件的代码
protected void LoadLogoPic()
{
this.openFileDialog2.ShowDialog();
string strFn = this.openFileDialog2.FileName;
this.pictureBox1.Image = Image.FromFile(strFn);
this.openFileDialog2.Filter = "All Files|*.*|BMP Files|*.bmp|JPG Files|*.jpg";
FileInfo fiImage = new FileInfo(strFn);
m_lImageFileLength = fiImage.Length;
FileStream fs = new FileStream(strFn, FileMode.Open, FileAccess.Read, FileShare.Read);
m_barrImg = new byte[Convert.ToInt32(this.m_lImageFileLength)];
int iBytesRead = fs.Read(m_barrImg, 0, Convert.ToInt32(this.m_lImageFileLength));
fs.Close();
}
试试这个方法;
Image img = picturebox1.Image();
byte[] arr;
ImageConverter converter = new ImageConverter();
arr=(byte[])converter.ConvertTo(img, typeof(byte[]));
command.CommandText = "INSERT INTO ImagesTable (Image) VALUES('" + arr + "')";
command.CommandType = CommandType.Text;
command.ExecuteNonQuery();