1、添加sqlserverce和sqlclient引用。
2、包含sqlserverce命名空间:using System.Data.SqlServerCe;
3、定义sqlceconnetion和获取数据库文件所在的路径:
protected internal SqlCeConnection store_;
private String strAppDir_ = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetModules()[0].FullyQualifiedName);
4、自定义open函数,用于打开数据库,若数据库不存在,则创建:
internal virtual void open()
{
String strPath = strAppDir_ + "//" + dbname_;
String connString = "Data Source=" + strPath +";LCID=1033;";
if (!File.Exists(strPath))
{
SqlCeEngine engine = new SqlCeEngine(connString);
engine.CreateDatabase();
store_ = new SqlCeConnection(connString);
store_.Open();
SqlCeCommand command = store_.CreateCommand();
command.CommandText = "CREATE TABLE GoodsInfo(Gplace nvarchar(400),Gnid nvarchar(200),Gflag int)";
command.ExecuteNonQuery();
command.Dispose();
engine.Dispose();
}
else
{
store_ = new SqlCeConnection(connString);
store_.Open();
}
}
5、数据库打开操作后,要及时关闭。
internal virtual void close()
{
if (store_ != null)
{
store_.Close();
store_ = null;
}
}
6、插入数据库函数实例:
internal void save(MobDemoMid.DBStruct array)
{
try {
open();
try
{
String skey = array.strGplace;
String svalue = array.strGnid;
int sign = array.strGflag;
SqlCeCommand command = store_.CreateCommand();
command.CommandText = "INSERT INTO GoodsInfo(Gplace,Gnid,Gflag) VALUES(@rkey,@rvalue,@rsign)";
SqlCeParameter param = null;
param = new SqlCeParameter("@rkey", SqlDbType.NVarChar);
param.Value = skey;
command.Parameters.Add(param);
param = new SqlCeParameter("@rvalue", SqlDbType.NVarChar);
param.Value = svalue;
command.Parameters.Add(param);
param = new SqlCeParameter("@rsign", SqlDbType.Int);
param.Value = sign;
command.Parameters.Add(param);
command.ExecuteNonQuery();
command.Dispose();
}
catch (SqlCeException ignored)
{
MessageBox.Show(ignored.Message.ToString());
return;
}
}
finally
{
close();
}
}
7、查询数据库实例。
public override void init()
{
try
{
open();
iRecordNum_ = 0;
SqlCeCommand re = store_.CreateCommand();
try
{
re.CommandText = "SELECT COUNT(*) FROM GoodsInfo";
SqlCeDataReader adpter = re.ExecuteReader();
while (adpter.Read())
{
iRecordNum_ = (int)adpter.GetValue(0);
}
adpter.Close();
re.Dispose();
close();
}
catch (Exception ex)
{
return;
}
if (iRecordNum_ == 0)
return;
try
{
if (iRecordNum_ > 0)
{
open();
SqlCeCommand command = store_.CreateCommand();
command.CommandText = "SELECT Gplace,Gnid,Gflag FROM GoodsInfo";
SqlCeDataReader reader = command.ExecuteReader();
if(mobDemoMid_.dbInfoArray_.Count != 0)
{
mobDemoMid_.dbInfoArray_.Clear();
}
while (reader.Read())
{
String key, value;
int sign;
key = (String)reader.GetValue(reader.GetOrdinal("Gplace"));
value = (String)reader.GetValue(reader.GetOrdinal("Gnid"));
sign = (int)reader.GetValue(reader.GetOrdinal("Gflag"));
MobDemoMid.DBStruct db = new MobDemoMid.DBStruct();
db.strGplace = key;
db.strGnid = value;
db.strGflag = sign;
mobDemoMid_.dbInfoArray_.Add(db);
}
reader.Dispose();
command.Dispose();
}
}
finally
{
try
{
close();
}
catch (Exception ignored)
{
}
}
}
catch (Exception ex)
{
}
}
8、更新数据库实例。
internal void updateGoodsInfo(String strPlace)
{
open();
SqlCeCommand re = store_.CreateCommand();
String strTemp = "update GoodsInfo set Gflag = 1 where Gplace = '" + strPlace + "'";
re.CommandText = strTemp;
re.ExecuteNonQuery();
re.Dispose();
close();
}