SQLite在C#中没有这样的表

时间:2012-07-28 11:31:44

标签: sqlite

我编写了这个C#代码,用于将一个文本数据插入到我的数据库表中:

SQLiteConnection con = new SQLiteConnection("Data Source=tDB1.sqlite;Version=3;");
string q1 = "INSERT INTO tMembers(mName) VALUES(?)";

SQLiteCommand cmd1 = new SQLiteCommand(q1, con);
cmd1.Parameters.AddWithValue("@mName", txtName.Text);

con.Open(); 
cmd1.ExecuteNonQuery(); 
con.Close();

我将我的tDB1.sqlite复制到我的程序文件夹并在sqlite中创建tMembers表。

当我运行我的程序时,程序调试器显示“”cmd1.ExecuteNonQuery();“”行并显示给我:SQLite错误没有这样的表

可以帮到我吗? 谢谢。

2 个答案:

答案 0 :(得分:0)

基于当前目录的文件看起来有点弱。如果您确定数据库完全位于可执行文件的同一目录中(即从visual studio $ projectdir$\bin\debug进行调试时),您可以按以下代码强制执行路径:

SQLiteConnection con = new SQLiteConnection(string.Format("Data Source={0};Version=3;"
Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),"tdb1.sqlite"))
    );

答案 1 :(得分:0)

更改命令字符串

string q1 = "INSERT INTO tMembers(mName) VALUES(?)";

string q1 = "INSERT INTO tMembers(@mName) VALUES(?)";

不需要保持对应列的名称,但在执行整个命令时,它必须与args的名称相同。有关此内容的更多信息,您可以在Google中搜索“PL/SQL”。

此外,您是否使用“VALUES(?)”执行此命令?我不确定它是否可行,如果没有NOT NULL约束,你可以执行INSERT INTO tMembers(@mName) DEFAULT VALUES