|
几个保存数据问题一直解决不了,请高人指点!应该属于新手问题!
[复制链接]
1.我写的PDA程序似乎不能使用Access数据库,在命名空间引用时出错,无法使用using System.Data.OleDb;因此OleDbConnection无法使用,是不是PDA程序不能用Access数据库?
2.想使用Ini文件保存数据,但使用PC桌面程序调试成功,移植到PDA程序运行到写ini文件时出错,提示MissingMethodException.读写ini文件的类与PC桌面程序中使用的一样,唯一的改动是把路径改了把"D:\\Bxsg\\text.ini"改为"\\Program Files\\Bxsg\\text.ini"难道PDA程序也不能使用ini文件?
3.最后想到使用SqlServerCe保存数据,调试结果通过,可以存,可以写,但是问题是只能保存本次运行的数据,当再次运行程序时,原来数据丢失,我使用的是SqlServerCe帮助中的例子:原程序如下,
public void SavDbToCe(int tPower,int tElectricity,int tVoltage)
{
if (File.Exists(ls_IniFilename))
File.Delete(ls_IniFilename);
string strConn="Data Source=\\Program Files\\Bxsg\\text.sdf";
SqlCeEngine engine=new SqlCeEngine(strConn);
try
{
//建立连接数据库
engine.CreateDatabase ();
engine.Dispose();
conn = new SqlCeConnection(strConn);
conn.Open();
//创建表
SqlCeCommand cmd = conn.CreateCommand();
cmd.CommandText ="CREATE TABLE TestTbl(id int PRIMARY KEY, power int, electricity int,voltage int)";
cmd.ExecuteNonQuery();
//插入数据
cmd.CommandText ="INSERT INTO TestTbl(id,power,electricity,voltage) VALUES (0,'"+tPower+"','"+tElectricity+"','"+tVoltage+"')";
cmd.ExecuteNonQuery();
//读数据
SqlCeDataReader rdr =null;
cmd.CommandText = "SELECT * FROM TestTbl";
rdr = cmd.ExecuteReader();
while (rdr.Read())
{
int id =rdr.GetInt32(2) ;
}
this.CloseDb();
}
catch(Exception f)
{
MessageBox.Show(f.Message);
}
}
原因是,每次建立数据库前有个判断if (File.Exists(ls_IniFilename))
File.Delete(ls_IniFilename);
造成每次都要删除上次创建的数据库,结果库里永远只有一条记录.如果把这两行代码删除,程序运行到建立数据库时就会报错:SqlCeException,无论路径中有无text.sdf文件都会报这个错误.
以上3个问题困扰我很久,希望高人指点,不胜感激!
|
|