我有一个名为“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.'.
我该怎么做?
答案 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));
}