0

次のコードを使用して、画像やその他の情報をユーザーに取得しています。画像の下のテキストボックスに画像ファイルのパスも表示したいと思います。私は成功せずにそれをやろうとしてきました。

以下は私が書いたコードです.mysqlディスプレイから画像の場所を取得することを除いて、他の問題を解決しています.

誰か私を助けてください!

private void showData_Click(object sender, EventArgs e)
            {
                string myConnection = "datasource = localhost; port=3306; username=root; password=root";
                string Query = "select * from MawkMo.Enlist_info;";
                MySqlConnection sqlConnection = new MySqlConnection(myConnection);
                MySqlCommand sqlCommand = new MySqlCommand(Query, sqlConnection);
                MySqlDataReader myReader;
                try
                {
                    sqlConnection.Open();
                    myReader = sqlCommand.ExecuteReader();
                    while (myReader.Read())
                    {

    byte[] imgbyte = (byte[])(myReader["Photo"]);
                            if (imgbyte == null)
                            {
                                PhotoBox.Image = null;
                            }
                            else
                            {
                                //string imgPath = (string)sqlCommand.ExecuteScalar();
                                //Photo_path.Text = imgPath;
                                MemoryStream mryStream = new MemoryStream(imgbyte);
                                PhotoBox.Image = System.Drawing.Image.FromStream(mryStream);
                            }

                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
4

2 に答える 2

1

コードの現在の形式では、実際に画像をファイルとして保存するのではなく、一連のバイトとしてデータベースに保存しているため、画像ファイル パスを取得できません。サーバーのハード ドライブにある画像ファイルはどこにもありません。また、画像をアプリケーションの外部から取得することもできません。

アプリケーションから独立して画像にアクセスすることが懸念される場合、またはデータベースに画像を保存したくない場合 (パフォーマンス上の懸念) は、データベースを再設計する必要があります。データベースの保存でImage.Save()は、ファイルを特定の場所に保存するメソッドを発行し、画像自体をバイト配列として保存するのではなく、その文字列 (ImageLocation) をデータベースに保存します。取得プロセスは、ImageLocation String を取得してImage.FromFile()メソッドで使用するだけです。

于 2013-07-24T06:14:54.407 に答える
0

とは何 PhotoBox.Imageですか?

MemoryStream imagebuf=new MemoryStream((byte[])myReader["Photo"]);

//create image object
System.Drawing.Image outImage=System.Drawing.Image.FromStream(imagebuf,true);
outImage.Save(Server.MapPath(“PhotoTemp/”)+”2.gif”);
于 2013-07-24T06:07:17.630 に答える