gpt4 book ai didi

c# - 如何在Windows Phone 7 中使用SQLite 数据库?

转载 作者:行者123 更新时间:2023-11-30 18:06:56 26 4
gpt4 key购买 nike

我正在开发 window phone 7 应用程序。我是 window phone 7 应用程序的新手。我是 Application.GetResourceStream() 方法的新手。我在我的应用程序中使用以下链接。

http://wirebear.com/blog/2010/11/12/using-sqlite-in-your-wp7-app

我正在按照上面链接中描述的步骤进行操作。我在 Application.GetResourceStream() 方法中遇到问题。在上面的方法中我使用了下面的代码

Stream src = Application.GetResourceStream(
new Uri(@"/SQLiteConnectivity;component/" + dbName,
UriKind.Relative)).Stream;

我右键单击了我的项目名称并选择了属性,发现程序集名称为“SQLiteConnectivity”。运行应用程序后,我在 Application.GetResourceStream() 处收到空引用异常错误。我也不知道我应该在 Application.GetResourceStream() 方法中使用什么来代替“组件”。您能否提供我可以解决上述问题的任何代码或链接或任何解决方案?

是的,我得到了答案部分所述的答案。我通过设置“构建”解决了上述问题我的数据库属性中的“操作”为“资源”,“复制到输出目录”为“始终复制”。但是我现在面临新的问题

我在我的 app.xaml.cs 中声明了以下代码

public partial class App : Application
{
public PhoneApplicationFrame RootFrame { get; private set; }

private DBHelper _db;
public DBHelper db
{
get
{
if (_db == null)
_db = new DBHelper("ExpenseManager.db");
return _db;
}
}
}

并在我的 mainpage.xaml.cs 中调用它,如下所示

private void button1_Click(object sender, RoutedEventArgs e)
{
// Code runs "for real"

_customerEntries = (Application.Current as App).db.SelectObservableCollection<Category>("SELECT Category_Name FROM Category WHERE Category_ID=1");
textBox1.Text = _customerEntries.ToString();
}

我在主页类下面添加了一个类,如下所示

public class Category
{
public int Category_ID { get; set; }
public string Category_Name { get; set; }
}

现在,当我运行我的应用程序时,在 BindAll(ppStmt) 的 SQLClient.cs 的以下函数中,单击按钮时出现“文件已加密或不在数据库中”的错误;

Sqlite3.Vdbe Prepare()
{
Sqlite3.Vdbe ppStmt=new Sqlite3.Vdbe();
if (Sqlite3.sqlite3_prepare_v2(_db, CommandText, CommandText.Length, ref ppStmt, 0) != Sqlite3.SQLITE_OK)
throw new SQLiteException(Sqlite3.sqlite3_errmsg(_db));
BindAll(ppStmt);
return ppStmt;
}

能否请您提供任何代码或链接来解决上述问题?如果我做错了什么,请指导我。

最佳答案

您需要验证数据库文件的构建属性是否设置为资源,并且您需要检查 dbName 属性的值以确保它是完整的文件名,包括任何文件夹结构。

App 的 db 属性需要不同的设置。在您的 App.xaml.cs 文件中,请更改此行:

public DBHelper db = new DBHelper("DATABASE.s3db");

为此:

private DBHelper _db;
public DBHelper db
{
get
{
if (_db == null)
_db = new DBHelper("DATABASE.s3db");
return _db;
}
}

请务必将 DATABASE.s3db 替换为您的数据库文件的名称,包括文件夹结构。

对于错误:

'file is encrypted or is not in a database' 

您是在哪个版本的 SQLite 中创建此数据库的?您必须使用 SQLite 版本 3。如果您使用的是 SQLite3,您是否在此数据库上设置了密码?

关于c# - 如何在Windows Phone 7 中使用SQLite 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4347094/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com