写了一个桌面应用程序,实现了接受邮件的功能。但是发现接受的邮件保存到本地以后,邮件管理感觉很麻烦。
于是我打算把接收的邮件存在access数据库里面。这样查询也方便一点。
现在我手里面有的软件是0ffice2007,vs2008.
请问我该怎么实现数据库的创建、数据库的查询等操作。
我找了一些示例,但是好像都不是用office2007的access。
如果哪位有这方便的代码,那就更好了。

解决方案 »

  1.   

    using System.Data; 
    using System.Data.OleDb; 
    private OleDbConnection con; 
    /// <summary> 
    /// 打开数据库连接 
    /// </summary> 
    /// <param name="DBpath">数据库路径(包括数据库名)</param> 
    private void Open(String DBpath) 

    if(con == null) 
    con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + DBpath); 
    if (con.State == ConnectionState.Closed) 
    con.Open(); 
    } /// <summary> 
    /// 创建一个命令对象并返回该对象 
    /// </summary> 
    /// <param name="sqlStr">数据库语句</param> 
    /// <param name="file">数据库所在路径</param> 
    /// <returns>OleDbCommand</returns> 
    private OleDbCommand CreateCommand(string sqlStr, string file) 

    Open(file); 
    OleDbCommand cmd = new OleDbCommand(); 
    cmd.CommandType = CommandType.Text; 
    cmd.CommandText = sqlStr; 
    cmd.Connection = con; 
    return cmd; 

    /// <summary> 
    /// 执行 
    /// </summary> 
    /// <param name="sqlStr">SQL语句</param> 
    /// <param name="file">数据库所在路径</param> 
    /// <returns>返回数值当执行成功时候返回true,失败则返回false</returns> 
    public bool ExecuteNonQury(string sqlStr, string file) 

    OleDbCommand cmd = CreateCommand(sqlStr, file); 
    int result = cmd.ExecuteNonQuery(); 
    if (result == -1 | result == 0) 

    cmd.Dispose(); 
    Close(); 
    return false; 

    else 

    cmd.Dispose(); 
    Close(); 
    return true; 

    /// <summary> 
    /// 执行数据库查询 
    /// </summary> 
    /// <param name="sqlStr">查询语句</param> 
    /// <param name="tableName">填充数据集表格的名称</param> 
    /// <param name="file">数据库所在路径</param> 
    /// <returns>查询的数据集</returns> 
    public DataSet GetDataSet(string sqlStr, string file) 

    DataSet ds = new DataSet(); 
    OleDbCommand cmd = CreateCommand(sqlStr, file); 
    OleDbDataAdapter dataAdapter = new OleDbDataAdapter(cmd); 
    dataAdapter.Fill(ds); 
    cmd.Dispose(); 
    Close(); 
    dataAdapter.Dispose(); 
    return ds; 

    /// <summary> 
    /// 生成一个数据读取器OleDbDataReader并返回该OleDbDataReader 
    /// </summary> 
    /// <param name="sqlStr">数据库查询语句</param> 
    /// <returns>返回一个DataReader对象</returns> 
    public OleDbDataReader GetReader(string sqlStr, string file) 

    OleDbCommand cmd = CreateCommand(sqlStr, file); 
    OleDbDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); 
    //CommadnBehavior.CloseConnection是将于DataReader的数据库链接关联起来 
    //当关闭DataReader对象时候也自动关闭链接 
    return reader; 
    } /// <summary> 
    /// 关闭数据库 
    /// </summary> 
    public void Close() 

    if (con != null) 
    con.Close(); 
    con = null; 
    } 传进来的路径是带上Access数据库名的
      

  2.   


    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Data.OleDb;public partial class _Default : System.Web.UI.Page 
    {
        protected void Page_Load(object sender, EventArgs e)
        {    }
        protected void Button1_Click(object sender, EventArgs e)
        {
            OleDbConnection conn = new OleDbConnection("provider=microsoft.jet.oledb.4.0;data source="+Server.MapPath("")+"\\CODEDB.mdb");
            string sql = "select * from Code ";
            OleDbDataAdapter oda = new OleDbDataAdapter(sql, conn);
            DataSet ds = new DataSet();        oda.Fill(ds);
          
            this.GridView1.DataSource = ds.Tables[0];
            this.GridView1.DataBind();
        }
    }
      

  3.   

    顶~
    楼主的接受邮件包括附件吗?如果不麻烦可以发一份给我吗?
    [email protected]  非常感谢
      

  4.   

    请问一下怎么获得access2007中类型为“附件”的内容。我查询出来都是附件的文件名。
      

  5.   

    看一楼的代码:
    using System.Data; 
    using System.Data.OleDb; 
    private OleDbConnection con; 
    /// <summary> 
    /// 打开数据库连接 
    /// </summary> 
    /// <param name="DBpath">数据库路径(包括数据库名)</param> 
    private void Open(String DBpath) 

    if(con == null) 
    con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + DBpath); 
    if (con.State == ConnectionState.Closed) 
    con.Open(); 
    } /// <summary> 
    /// 创建一个命令对象并返回该对象 
    /// </summary> 
    /// <param name="sqlStr">数据库语句</param> 
    /// <param name="file">数据库所在路径</param> 
    /// <returns>OleDbCommand</returns> 
    private OleDbCommand CreateCommand(string sqlStr, string file) 

    Open(file); 
    OleDbCommand cmd = new OleDbCommand(); 
    cmd.CommandType = CommandType.Text; 
    cmd.CommandText = sqlStr; 
    cmd.Connection = con; 
    return cmd; 

    /// <summary> 
    /// 执行 
    /// </summary> 
    /// <param name="sqlStr">SQL语句</param> 
    /// <param name="file">数据库所在路径</param> 
    /// <returns>返回数值当执行成功时候返回true,失败则返回false</returns> 
    public bool ExecuteNonQury(string sqlStr, string file) 

    OleDbCommand cmd = CreateCommand(sqlStr, file); 
    int result = cmd.ExecuteNonQuery(); 
    if (result == -1 | result == 0) 

    cmd.Dispose(); 
    Close(); 
    return false; 

    else 

    cmd.Dispose(); 
    Close(); 
    return true; 

    /// <summary> 
    /// 执行数据库查询 
    /// </summary> 
    /// <param name="sqlStr">查询语句</param> 
    /// <param name="tableName">填充数据集表格的名称</param> 
    /// <param name="file">数据库所在路径</param> 
    /// <returns>查询的数据集</returns> 
    public DataSet GetDataSet(string sqlStr, string file) 

    DataSet ds = new DataSet(); 
    OleDbCommand cmd = CreateCommand(sqlStr, file); 
    OleDbDataAdapter dataAdapter = new OleDbDataAdapter(cmd); 
    dataAdapter.Fill(ds); 
    cmd.Dispose(); 
    Close(); 
    dataAdapter.Dispose(); 
    return ds; 

    /// <summary> 
    /// 生成一个数据读取器OleDbDataReader并返回该OleDbDataReader 
    /// </summary> 
    /// <param name="sqlStr">数据库查询语句</param> 
    /// <returns>返回一个DataReader对象</returns> 
    public OleDbDataReader GetReader(string sqlStr, string file) 

    OleDbCommand cmd = CreateCommand(sqlStr, file); 
    OleDbDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); 
    //CommadnBehavior.CloseConnection是将于DataReader的数据库链接关联起来 
    //当关闭DataReader对象时候也自动关闭链接 
    return reader; 
    } /// <summary> 
    /// 关闭数据库 
    /// </summary> 
    public void Close() 

    if (con != null) 
    con.Close(); 
    con = null;