using (var connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\BlankDatabase.mdb"))
{
connection.Open();
// Create table
using (var command = connection.CreateCommand())
{
command.CommandText = @"
CREATE TABLE FileTable (
FileName VARCHAR(255),
File IMAGE)
";
command.ExecuteNonQuery();
}
var imageContent = File.ReadAllBytes(@"C:\logo.png");
// upload image to the table
using (var command = connection.CreateCommand())
{
command.CommandText = @"
INSERT INTO FileTable (FileName, File)
VALUES (@FileName, @File)
";
command.Parameters.AddWithValue("@FileName", "Logo");
command.Parameters.AddWithValue("@File", imageContent);
command.ExecuteNonQuery();
}
// retreive image from the table
using (var command = connection.CreateCommand())
{
command.CommandText = @"
SELECT File
FROM FileTable
WHERE FileName = 'Logo'
";
var readImageContent = (byte[])command.ExecuteScalar();
File.WriteAllBytes(@"C:\logo1.png", readImageContent);
}
// alter image from the table
using (var command = connection.CreateCommand())
{
command.CommandText = @"
UPDATE FileTable
SET File = @File
WHERE FileName = 'Logo'
";
command.Parameters.AddWithValue("@File", imageContent);
command.ExecuteNonQuery();
}
// delete image from the table
using (var command = connection.CreateCommand())
{
command.CommandText = @"
DELETE FROM FileTable
WHERE FileName = 'Logo'
";
command.ExecuteNonQuery();
}
}
このコードでは、BlankDatabase.mdb
は空のMS Accessデータベースファイルです。
[編集]
上記のようにあなたは、データベースに画像を保存したときに上記のように、あなたがイメージのバイトを取得することができます。
:
あなたがイメージからImage
を構築することができますが、このようにバイト
var imageConverter = new ImageConverter();
pictureBox1.Image = (Image)imageConverter.ConvertFrom(fileContent);
(私はアクセスのデータベースに添付ファイルフィールドから画像を取るためにウェブのURLとしてこれを使用しますが、COMの呼び出しは、あなたのWinフォームアプリケーションで同じになります)ことができます私はそのイメージ・データ型を考えますSQLServerデータ型からです 私はすでにthat.iがMicrosoft AccessのAttachment DataTypeを知りたいと知っています。 – Titan
はい。私は既にMSアクセスでデータベースを作成しています。 また、OpenFileDialogを使用して、そのOpenFileDialogを使用してアクセスデータベースに画像を挿入したいと考えていますか... アクセスデータベースで、データ型添付付きの列を作成しました.. – Titan
@Bunny - 申し訳ありません。どういう意味ですか。 OleDbプロバイダ経由でAttachment Data Typeを使用できるとは思いません。あなたは 'Microsoft.Office.Interop.Access.Dao'と相互作用する必要があります。これは楽しいものではありません。 'OLE Object'型を使用できない理由は何ですか? –