mobile中调用sqlce数据库

 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();
        }

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值