C# sqlite 里面 ExecuteNonQuery() 出了问题

staticvoidMain(string[]args){SQLiteConnectionconn=null;stringdbPath="DataSource="+Env... static void Main(string[] args)
{

SQLiteConnection conn = null;

string dbPath = "Data Source =" + Environment.CurrentDirectory + "/testloop.db";
conn = new SQLiteConnection(dbPath);//创建数据库实例,指定文件位置
conn.Open();//打开数据库,若文件不存在会自动创建

string sql = "CREATE TABLE IF NOT EXISTS student(id integer, name varchar(20), sex varchar(2));";//建表语句
SQLiteCommand cmdCreateTable = new SQLiteCommand(sql, conn);
cmdCreateTable.ExecuteNonQuery();//如果表不存在,创建数据表
for (int i = 0; i < 10; i++)
{
SQLiteCommand cmdInsert = new SQLiteCommand(conn);
cmdInsert.CommandText = "INSERT INTO student VALUES(i, '小红', '男')";//插入几条数据
cmdInsert.ExecuteNonQuery();
}
conn.Close();

//cmdInsert.ExecuteNonQuery(); 这里出了问题 说
An unhandled exception of type 'System.Data.SQLite.SQLiteException' occurred in System.Data.SQLite.dll
Additional information: SQL logic error or missing database
no such column: i
怎么修改啊 还有就是我不太理解ExecuteNonQuery()这个方法 能解释一下吗?谢谢
展开
 我来答
greystar_cn
推荐于2016-07-04 · 知道合伙人软件行家
greystar_cn
知道合伙人软件行家
采纳数:16407 获赞数:17260
本人主要从事.NET C#方向的技术开发工作,具有10多年的各类架构开发工作经验。

向TA提问 私信TA
展开全部
ExecuteNonQuery 是用来执行 insert update delete 这些语句的,不用返回查询结果的。其返回值为受影响的行数。

CREATE TABLE IF NOT EXISTS student(id integer, name varchar(20), sex varchar(2)) 你这个语法不对
改成CREATE TABLE student(id integer, name varchar(20), sex varchar(2))
试下
更多追问追答
追问
我有段代码:
cmdInsert.CommandText = "INSERT INTO student VALUES(1, '小红', '男')";
cmdInsert.ExecuteNonQuery();
我试了下,是可以执行的,为什么改成for循环就不能出错了呢?求解答
追答
你的意思是
for(int i.....)
{
cmdInsert.CommandText = "INSERT INTO student VALUES(1, '小红', '男')";
cmdInsert.ExecuteNonQuery(); //代码这样写,出错,是因为 上面主键 1 ,数据库里已有,你要改成
cmdInsert.CommandText = "INSERT INTO student VALUES(“+i +”, '小红', '男')";
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式