日期:2014-05-18  浏览次数:20813 次

求教如何将图片文件存入sql server 2005数据表中
我最终想解决的问题是:在VFP中,想把123.JPG文件进行BASE64编码存入SQL SERVER 2005,然后JAVA在将其取出来,反编回来

但是我发现对同一个 123.JPG文件,VFP和JAVA都各种进行base64编码,生成的字符串长度不同,也不能进行相互反编码(体现为文件不能打开),查过一些资料,有提到VFP在进行BASE64编码过程中,对某个字符进行了个性化处理。

请问情况是否如此?我该怎么办才能解决问题?多谢

------解决方案--------------------


如果能够顺利地写入数据库,并读取出来的话。编码相关的问题,LZ需要去相应的板块问问。
------解决方案--------------------
VFP和JAVA难道不能转换成2进制么??这样就一致了吧
------解决方案--------------------
SQL code
图片保存到数据库的方法
http://topic.csdn.net/u/20081024/11/846e3e56-218b-4b07-b733-ee87dc2fe687.html?882064923

图片保存到数据库的方法:

  public void imgToDB(string sql)
  { //参数sql中要求保存的imge变量名称为@images
  //调用方法如:imgToDB("update UserPhoto set Photo=@images where UserNo='" + temp + "'");
  FileStream fs = File.OpenRead(t_photo.Text);
  byte[] imageb = new byte[fs.Length];
  fs.Read(imageb, 0, imageb.Length);
  fs.Close();
  SqlCommand com3 = new SqlCommand (sql,con);
  com3.Parameters.Add("@images", SqlDbType.Image).Value = imageb;
  if (com3.Connection.State == ConnectionState.Closed)
  com3.Connection.Open();
  try
  {
  com3.ExecuteNonQuery();
  }
  catch
  { }
  finally
  { com3.Connection.Close(); }
  }  

数据库中读出图片并显示在picturebox中:

方法一:
private void ShowImage(string sql)
  {
  //调用方法如:ShowImage("select Photo from UserPhoto where UserNo='" + userno +"'");
  SqlCommand cmd = new SqlCommand(sql, conn);
  conn.Open();
  byte[] b= (byte[])cmd.ExecuteScalar();
  if (b.Length 〉 0)
  {
  MemoryStream stream = new MemoryStream(b, true);
  stream.Write(b, 0, b.Length);
  pictureBox1.Image = new Bitmap(stream);
  stream.Close();
  }
  conn.Close();
  }

方法二:当在dg中选中某行时:
  private void dg_MouseUp(object sender, MouseEventArgs e)
  {
  //整行选择
  if (e.Button == System.Windows.Forms.MouseButtons.Left)
  {//用户编号,姓名,性别,身份证号,籍贯,学院,系所,校区,部门,电话,照片
  //显示相片
  object imgobj=dg[10, dg.CurrentRow.Index].Value;
  if (imgobj != null && !Convert.IsDBNull(imgobj))
  {
  byte[] imgb = (byte[])imgobj;
  MemoryStream memStream = new MemoryStream(imgb);
  try
  {
  Bitmap myimge = new Bitmap(memStream);
  this.pictureBox1.Image = myimge;
  }
  catch
  {
  DB.msgbox("从数据库读取相片失败!");
  }
  }
  else
  pictureBox1.Image = null;
  }
  }