通过代码访问的SQLite没有表格?

时间:2011-02-20 22:32:02

标签: sqlite xamarin.ios

我通过SQLiteManager创建了一个SQLite数据库。我有一个名为Envelopes的表和其他表。当我从代码(下面)访问它时,我得到一个异常,说我正在尝试访问的表不存在。我已经尝试了两个Envelopes和ZVDB.Envelopes,是的,我已经仔细检查了我的表名拼写。

var conn = new SqliteConnection("Data Source=ZVDB");
using ( var cmd = conn.CreateCommand()) {
    conn.Open();
    cmd.CommandType = CommandType.Text;

    cmd.CommandText = "insert into Envelopes (Name, Remainder, Budget) values (@1, @2, @3); select @@identity";
    cmd.Parameters.Add("@1", DbType.String).Value = env.Name;
    cmd.Parameters.Add("@2", DbType.Int32).Value = env.Remainder;
    cmd.Parameters.Add("@3", DbType.Int32).Value = env.Budget;

    env.ID = (int) cmd.ExecuteScalar();
}

我在我的MonoDevelop项目中有它,并采取适当的行动。

2 个答案:

答案 0 :(得分:2)

这意味着数据库的路径是错误的。

在SQLite中打开不存在的数据库时,默认情况下它只会创建一个空白的新数据库。没错。

当您尝试读取或写入不存在的表时,会出现您所描述的错误。

在连接字符串中,您只指定了没有路径的ZVDB。尝试指定完整的绝对路径。

答案 1 :(得分:1)

Samuel's answer is correct - 如果要访问数据库,则需要确保已将数据库包含在解决方案中,将“构建操作”设置为“内容”并将“Copt设置为输出目录” “永远复制”。