我通过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项目中有它,并采取适当的行动。
答案 0 :(得分:2)
这意味着数据库的路径是错误的。
在SQLite中打开不存在的数据库时,默认情况下它只会创建一个空白的新数据库。没错。
当您尝试读取或写入不存在的表时,会出现您所描述的错误。
在连接字符串中,您只指定了没有路径的ZVDB。尝试指定完整的绝对路径。
答案 1 :(得分:1)
Samuel's answer is correct - 如果要访问数据库,则需要确保已将数据库包含在解决方案中,将“构建操作”设置为“内容”并将“Copt设置为输出目录” “永远复制”。