使用windowsPhone中的现有SqlCe数据库

时间:2013-11-22 08:20:30

标签: windows-phone-7 windows-phone-8 windows-phone sql-server-ce

我有一个名为“mydatabase.sdf”的数据库,它是我在C#项目中创建的。现在我想在windowsPhone中使用这个数据库。 我只想在列表中显示数据库中的数据。 由于我是Windows手机的新用户,我在谷歌搜索了很多次,但事情对我来说似乎很复杂。 现在将数据库保存在wondowsphone项目中以及如何在列表中显示mydabase.sdf的数据。 谁能特意告诉我? 另一个问题,在winPhone7和Winphone8中使用SqlCe有什么区别吗? 任何人都可以帮助我吗?

更新: 我使用名为“ExportSqlCE.exe”的工具为sqlCe数据库创建一个DataContext类,我刚刚通过项目中的数据库和DataContext类。 方法My DataContext类的定义如下所示:

 #region Extensibility Method Definitions
partial void OnCreated();
#endregion

public System.Data.Linq.Table<Tbl> Tbls
{
    get
    {
        return this.GetTable<Tbl>();
    }
}
}

 [global::System.Data.Linq.Mapping.TableAttribute(Name="tbl")]
public partial class Tbl
 {

private string _Clm;

public Tbl()
{
}

[global::System.Data.Linq.Mapping.ColumnAttribute(Name="clm", Storage="_Clm", DbType="NVarChar(100)")]
public string Clm
{
    get
    {
        return this._Clm;
    }
    set
    {
        if ((this._Clm != value))
        {
            this._Clm = value;
        }
    }
}
  }
  #pragma warning restore 1591

我的数据库有一个名为“tbl”的表和一个名为“clm”的列。 我只是想显示我的表的列数据。我使用了以下代码:

      register_dbContext db=null;
      .....

    private void button1_Click(object sender, RoutedEventArgs e)
    {

       // MessageBox.Show("hgf");

        using (db = new register_dbContext(register_dbContext.ConnectionString))
        {
           db.CreateIfNotExists();  
           db.LogDebug = true;
        }


        if (db!=null)
        {

            var contacts = from m in db.Tbls select m;


            foreach (var a in contacts)
            {
                MessageBox.Show(a.Clm);
                MessageBox.Show("fdf");

            }


            NavigationService.Navigate(new Uri("/Page2.xaml", UriKind.Relative));
        }
            // Use the connecton here...

    }

它显示此错误:

Can not access a disposed object.
Object name: 'DataContext accessed after Dispose.'.

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您正在使用using语句,该语句将对象置于结束大括号中。这就是你得到那个例外的原因。所有数据库访问都需要在using语句的大括号内。

以这种方式更改代码以检索对象:

using (db = new register_dbContext(register_dbContext.ConnectionString))
{
           db.CreateIfNotExists();  
           db.LogDebug = true;


            var contacts = from m in db.Tbls select m;


            foreach (var a in contacts)
            {
                MessageBox.Show(a.Clm);
                MessageBox.Show("fdf");

            }


            NavigationService.Navigate(new Uri("/Page2.xaml", UriKind.Relative));
}