在一个FORM上有三个按钮和一个PICTUREBOX,一个按钮用于打开文件,找到图片,打开的文件要自动存到一个ACCESS 文件里.通过其余两个按钮可以使在ACCESS 里的图片向前和向后翻页(next 和 previous).只有授权的使用着可以使用这个软件.在运行中出现的错误要写在Logfile 里.能够写出程序的立即给分

解决方案 »

  1.   

    你不知道有System.Windows.Forms.OpenFileDialog和System.Windows.Forms.FolderBrowserDialog?不知道就去看MSDN...
      

  2.   

    打开文件当然不难,但是怎么把图片写到数据库里啊,保存路经吗?出现的错误又怎么写到Logfile 里呢.我是菜,各位不菜的大侠总可以给点思路吧.只说风凉话没有任何帮助.
      

  3.   

    基础书我看了,没有把图片保存到数据库的,也没有怎么写到LOGFILE里的.
      

  4.   

    太简单了,form外面放4个按钮一个图片框,名称参考代码using System;
    using System.IO;
    using System.Data.OleDb;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;namespace access图片操作
    {
        public partial class Form1 : Form
        {
            private DataTable _DataTable = new DataTable();        private int _Id =-1;        public Form1()
            {
                InitializeComponent();
            }        
            private void _SaveImageToMDBbutton_Click(object sender, EventArgs e) //保存图片到数据库
            {
                OpenFileDialog openFileDialog=new OpenFileDialog();
                openFileDialog.Filter="所有图片|*.jpeg;*.jpg;*.bmp;*.png";
                openFileDialog.ShowDialog();
                if (openFileDialog.FileName.Length > 0)
                {
                    FileStream fileStream = new FileStream(openFileDialog.FileName, FileMode.Open, FileAccess.Read);
                    byte[] fileByte = new byte[fileStream.Length];
                    fileStream.Read(fileByte, 0, fileByte.Length);
                    fileStream.Close();
                    fileStream.Dispose();
                    OleDbConnection oleDbConnection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\test.mdb");
                    System.Data.OleDb.OleDbParameter imageParameter = new OleDbParameter("@image", OleDbType.Binary);
                    imageParameter.Value = fileByte;
                    OleDbCommand oleDbCommand = new OleDbCommand("INSERT INTO test ([image]) VALUES (@image)", oleDbConnection);
                    oleDbCommand.Parameters.Add(imageParameter);
                    try
                    {
                        oleDbConnection.Open();
                        if (oleDbCommand.ExecuteNonQuery() > 0) MessageBox.Show("插入成功!", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    catch (Exception exception)
                    {
                        MessageBox.Show("出错啦:" + exception.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    finally
                    {
                        if (oleDbConnection.State == ConnectionState.Open) oleDbConnection.Close();
                    }
                } 
            }        private void Previousbutton_Click(object sender, EventArgs e)  //上一幅图按钮
            {
                for (int i = 0, k = this._DataTable.Rows.Count; i < k; i++)
                {
                    if ((int)this._DataTable.Rows[i].ItemArray[0] == this._Id)
                    {
                        if (i == 0)
                        {
                            MessageBox.Show("已是第一幅图!", "信息", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        }
                        else
                        {
                            byte[] imageByte = (byte[])this._DataTable.Rows[i - 1].ItemArray[1];
                            MemoryStream memoryStream = new MemoryStream(imageByte);
                            pictureBox1.Image = Image.FromStream(memoryStream);
                            this._Id = (int) this._DataTable.Rows[i-1].ItemArray[0];
                        }
                    }
                }
                
            }        private void button1_Click(object sender, EventArgs e)  //读表按钮
            {
                OleDbConnection oleDbConnection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\test.mdb");
                OleDbDataAdapter oleDbDataAdapter = new OleDbDataAdapter("SELECT Id,Image FROM Test", oleDbConnection);
                oleDbDataAdapter.Fill(this._DataTable);
                if(this._DataTable.Rows.Count>0)
                {
                    this._Id =(int)this._DataTable.Rows[0].ItemArray[0];
                    byte[] imageByte=(byte[]) this._DataTable.Rows[0].ItemArray[1];
                    MemoryStream memoryStream=new MemoryStream(imageByte);
                    pictureBox1.Image = Image.FromStream(memoryStream);
                }
            }        private void _NextImagebutton_Click(object sender, EventArgs e) //下一幅图
            {
                for (int i = 0, k = this._DataTable.Rows.Count; i < k; i++)
                {
                    if ((int)this._DataTable.Rows[i].ItemArray[0] == this._Id)
                    {
                        if (i == k-1)
                        {
                            MessageBox.Show("已是最后一幅图!", "信息", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        }
                        else if (k == 1)
                        {
                            MessageBox.Show("只有一幅图!", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                        else
                        {
                            byte[] imageByte =(byte[]) this._DataTable.Rows[i + 1].ItemArray[1];
                            MemoryStream memoryStream = new MemoryStream(imageByte);
                            pictureBox1.Image = Image.FromStream(memoryStream);
                            this._Id =(int) this._DataTable.Rows[i + 1].ItemArray[0];
                        }
                    }
                }
            }
        }
    }验证方面自己实现,不知道你想怎么实现。欢迎加入我的群 63979707  讨论。
      

  5.   

    谢谢BEJON,还有一个问题,你好象没把错误写到LOGFILE文件里啊
      

  6.   

    放在catch里
                        using (StreamWriter streamWriter = new StreamWriter(Application.StartupPath + "\\LOGFILE.txt", true, Encoding.Default))
                        {
                            streamWriter.WriteLine(DateTime.Now + "\t\t" + exception.Message);
                            streamWriter.Close();
                            streamWriter.Dispose();
                        }catch不够可以自己加,比如读图片出错(picturbox不一定支持所有你认为是图片的文件)