我在Winform程序关闭时,把数据写入数据库,关闭程序后,再打开数据库,确认了数据已写入。打开程序时有个读取数据的动作,但打开程序后,发现什么也读取不到,再打开数据库时,发现数据都没有了!有高手知道这是怎么回事吗?我估计应该是在打开数据库时出现了问题打开数据库的代码:
public static OleDbConnection DataConn()
{
string strg = Application.StartupPath.ToString(); strg += @"\Appointment.mdb"; return new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strg);
} public static OleDbDataReader SearchAppoint()
{
OleDbConnection con = DataConn(); con.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = con;
cmd.CommandText = "select * from [Appointment] "; OleDbDataReader reader = cmd.ExecuteReader(); return reader; }
public static OleDbConnection DataConn()
{
string strg = Application.StartupPath.ToString(); strg += @"\Appointment.mdb"; return new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strg);
} public static OleDbDataReader SearchAppoint()
{
OleDbConnection con = DataConn(); con.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = con;
cmd.CommandText = "select * from [Appointment] "; OleDbDataReader reader = cmd.ExecuteReader(); return reader; }
写入代码是?
返回后,你怎么取值的?代码?
{
int affectrow;
OleDbConnection con = DataConn(); OleDbCommand cmd = new OleDbCommand();
cmd.Connection = con;
cmd.CommandText = string.Format("Insert into [Appointment] values('{0}','{1}','{2}','{3}','{4}')",startDate ,endDate ,Color,Subject,Description ); con.Open();
affectrow = cmd.ExecuteNonQuery();
con.Close(); return affectrow; }关闭程序后,我直接打开Access来确认数据是否已经写入至于打开程序读取数据的代码,已经在一楼给出
很有可能,放到debug文件夹里,不要放到源文件那里
问题是, 你说的“引入” 是什么意思?如果连接数据库的话 只需要把mdb文件放在一个固定的目录里, 是不是debug 没有关系, (当然 ,放在debug 文件夹中, 可以使用application path 来找到它, 还是比较方便的 )你先试试, 看能不能成功连接到mdb 数据库, 调试下, 如果能连接的话, 调试看看affectrow 是多少
如果确定 affectrow 大于0 你再来问问。
最近搞access 头大
strg = strg.Substring(0, strg.LastIndexOf("\\"));
strg = strg.Substring(0, strg.LastIndexOf("\\")); strg += @"\Appointment.mdb"; return new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strg);
但还是很好奇为什么会这样,还有怎么把引入数据库的路径设置为在Debug文件夹下,而不是根目录?