簡體   English   中英

在SQL Server 2014數據庫中保存指紋圖像

[英]Saving fingerprint image in sql server 2014 database

我正在開發指紋系統。 我想將指紋圖像和其他數據(例如名字和姓氏)提交給數據庫,但它始終顯示此異常: No mapping exists from object type System.Drawing.Bitmap to a known managed provider native type.

這是我的最后一個代碼:

public void btnSave_Click(object sender, EventArgs e)
   {
     @fname = txtfname.Text;
     @lname = txtlname.Text;
     byte[] @img1 = Encoding.UTF8.GetBytes(Convert.ToString(pictureBox1.Image));    
     con = new SqlConnection(@"Data Source=DESKTOP-400N4CL;Initial Catalog=test;Integrated Security=True");
     con.Open();
     cmd = new SqlCommand("INSERT INTO dbo.fingerp " + " (fname,lname,finprint) " + " VALUES(@fname,@lname,@img1)", con);
     cmd.Parameters.AddWithValue("@fname", txtfname.Text);
     cmd.Parameters.AddWithValue("@lname", txtlname.Text);
     cmd.Parameters.AddWithValue("@img1", pictureBox1.Image);
     cmd.ExecuteNonQuery();
   }

我也使用了這種方法:

public static byte[] ImageToByte2(Image bmp)
  {
     byte[] img1 = new byte[0];
     using (MemoryStream stream = new MemoryStream())
      {
       bmp.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
       stream.Close();
       img1 = stream.ToArray();
      }
     return img1;
  }

同樣的錯誤。 任何協助請。

您試圖將PictureBox的內容(類型為System.Drawing.Bitmap )保存到需要二進制數據的數據庫字段中。

所以問題是這一行:

cmd.Parameters.AddWithValue("@img1", pictureBox1.Image);

應該是

cmd.Parameters.AddWithValue("@img1", @img1);

這是一個包含圖像數據的字節數組。

我還假定您的finprint BINARYVARBINARY類型。

SQL Server需要文件流,並且ImageToByte2()方法實現中的邏輯錯誤。

另外,您正在嘗試將位圖傳遞給數據庫,這將不起作用。

嘗試這個 :

public void btnSave_Click(object sender, EventArgs e)
{
@fname = txtfname.Text;
@lname = txtlname.Text;
byte[] @img1 = ImageToByte2(pictureBox1.Image);
con = new SqlConnection(@"Data Source=DESKTOP-400N4CL;Initial Catalog=test;Integrated Security=True");
con.Open();
cmd = new SqlCommand("INSERT INTO dbo.fingerp " + " (fname,lname,finprint) " + " VALUES(@fname,@lname,@img1)", con);
cmd.Parameters.AddWithValue("@fname", txtfname.Text);
cmd.Parameters.AddWithValue("@lname", txtlname.Text);
cmd.Parameters.AddWithValue("@img1", @img1);
cmd.ExecuteNonQuery();
}


public static byte[] ImageToByte2(Bitmap img)
{
using (var stream = new MemoryStream())
{
img.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp);
return stream.ToArray();
}
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM