私は完全な情報とパスポートの写真を表示するためにMySQLデータベースから情報を取得しようとしています。しかし、挑戦があるようです。 Read()の前に無効なエラーが表示され、まだパスポートが表示されません。しかし、それはコンパイル中にエラーを出さない。データベースMysqLからイメージを取得できませんC#
注:行パラメータは、MySQLデータベースのパスポートです。
私のコードは、私はおそらく不足している可能性が何
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MetroFramework;
using MySql.Data.MySqlClient;
using System.IO;
namespace VisitorManager2
{
public partial class VisitSignout : MetroFramework.Forms.MetroForm
{
public VisitSignout()
{
InitializeComponent();
}
private void VisitSignout_Load(object sender, EventArgs e)
{
}
private void metroTextBox9_Click(object sender, EventArgs e)
{
}
private void metroLabel9_Click(object sender, EventArgs e)
{
}
/* private Image getPasport()
{
string constring = "server=localhost;user id=root;database=vms2";
using (MySqlConnection con = new MySqlConnection(constring))
{
string query = "select passport from vms2.vist_db";
MySqlDataAdapter da = new MySqlDataAdapter(query, con);
DataTable dt = new DataTable();
da.Fill(dt);
foreach (DataRow dr in dt.Rows)
{
}
}
return img ;
}*/
private void metroButton3_Click(object sender, EventArgs e)
{
string constring = "server=localhost;user id=root;database=vms2";
string query = "select * from visit_db where visitor_name='" + metroTextBox10.Text.Trim() + "'";
using (MySqlConnection con = new MySqlConnection(constring))
{
try
{
DataTable dt = new DataTable();
con.Open();
MySqlDataReader rdr = null;
MySqlCommand cmd = new MySqlCommand(query, con);
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
rdr = cmd.ExecuteReader();
while (rdr.Read())
{
metroTextBox1.Text = (rdr["visit_date"].ToString());
metroTextBox2.Text = (rdr["visit_time"].ToString());
metroTextBox3.Text = (rdr["visitor_name"].ToString());
metroTextBox4.Text = (rdr["meeting_employee"].ToString());
metroTextBox5.Text = (rdr["organization"].ToString());
metroTextBox6.Text = (rdr["phone"].ToString());
metroTextBox7.Text = (rdr["visit_type"].ToString());
metroTextBox8.Text = (rdr["department"].ToString());
var ds = new DataSet();
da.Fill(ds, "passport");
int count = ds.Tables["passport"].Rows.Count;
if (count > 0)
{
var data = (Byte[])ds.Tables["passport"].Rows[count - 1]["passport"];
var stream = new MemoryStream(data);
pictureBox1.Image = Image.FromStream(stream);
}
}
con.Close();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
}
は次のようになりますか?
完全な例外は何ですか? – Crowcoder
これを取得しますこのConnectionに関連付けられたDataReaderが既に開いていますが、最初に閉じる必要があります。@Crowcoder例外として – Eric
'da.Fill()'を呼び出す前に接続を閉じます。 MySqlプロバイダが複数のアクティブな結果セットをサポートしているかどうかはわかりませんが、それも調べるべきことです。また、パラメータを使用して、テキストボックス値を通じてSQLインジェクションを防止します。 – Crowcoder