写了一个桌面应用程序,实现了接受邮件的功能。但是发现接受的邮件保存到本地以后,邮件管理感觉很麻烦。
于是我打算把接收的邮件存在access数据库里面。这样查询也方便一点。
现在我手里面有的软件是0ffice2007,vs2008.
请问我该怎么实现数据库的创建、数据库的查询等操作。
我找了一些示例,但是好像都不是用office2007的access。
如果哪位有这方便的代码,那就更好了。
于是我打算把接收的邮件存在access数据库里面。这样查询也方便一点。
现在我手里面有的软件是0ffice2007,vs2008.
请问我该怎么实现数据库的创建、数据库的查询等操作。
我找了一些示例,但是好像都不是用office2007的access。
如果哪位有这方便的代码,那就更好了。
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数据库名的
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();
}
}
楼主的接受邮件包括附件吗?如果不麻烦可以发一份给我吗?
[email protected] 非常感谢
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;
}