我编写了这个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错误没有这样的表
可以帮到我吗? 谢谢。
答案 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
。