いろいろ検索していろいろ試してみましたが、この問題を解決できませんでした。イメージをmysqlファイルに保存する必要があります。
以下のコードを使用して、画像をデータベースに保存しました。
try
{
string location = @"C:\Users\test\Downloads\Photos\batman-greenscreen.jpg";
FileStream fs = new FileStream(location, FileMode.Open, FileAccess.Read);
UInt32 fileLength = (UInt32)fs.Length;
byte[] buffer = new byte[fileLength];
fs.Read(buffer, 0, (int)fileLength);
string sqlPhotoQuery = "INSERT INTO tab_photo VALUES('" + photo.PhotoId + "','" + photo.ProjectID + "','" + photo.Day + "','" + photo.Barcode + "','" + photo.Photoname + "','" + photo.PhotoXml + "','" + buffer + "','" + fileLength + "')";
int result = MySqlHelper.ExecuteNonQuery(connectionString, sqlPhotoQuery);
if (result > 0)
return true;
else
return false;
}
catch (Exception e)
{
return false;
}
このファイルのイメージの長さは 12428 です。
データベースからデータを取得するために試したこと:
Photo photo = new Photo();
try
{
string sqlQuery = "SELECT * FROM tab_photo where PhotoId='"+photoId+"'";
MySqlDataReader rdr = MySqlHelper.ExecuteReader(connectionString, sqlQuery);
while (rdr.Read())
{
photo.PhotoId = rdr.GetString("PhotoId");
photo.ProjectID = rdr.GetString("ProjectID");
photo.Day = rdr.GetInt32("Day");
photo.Barcode = rdr.GetString("Barcode");
photo.Photoname = rdr.GetString("Photoname");
photo.PhotoXml = rdr.GetString("PhotoXml");
MemoryStream ms;
UInt32 FileSize;
Bitmap outImage;
int fileSize = rdr.GetInt32(rdr.GetOrdinal("PhotoSize"));
byte[] rawData = new byte[fileSize];
rdr.GetBytes(rdr.GetOrdinal("Photo"), 0, rawData, 0, (Int32)fileSize);
photo.imageByte = rawData;
}
}
catch (Exception e)
{}
しかし、ファイルを取得すると、最初の 13 バイトのみが取得されます。その後、その値はゼロになり、値の取得に違いがあります。
Connector/Net を使用した BLOB データの処理に記載されている手順に従いました。
それによると、次のように設定を変更しました。
これは、データベースに保存されたデータの方法です
正しい値を取得できない理由は何ですか? データの保存や検索、データベースの構成に問題はありませんか?