insert into语句的语法错误问题!

bios8086 2010-08-25 05:16:50
SQLite的 TEXT类型 是不是 可以直接插入 string类型? 仿照下面的例子后! 发现提示 insert into语句的语法错误
我的 string sql = "insert into YTC(HC)values(@Half)";
我确实建立了 YTC这个表 并且也有 HC这列 这列的类型 我建的时候选的TEXT类型


public void InsertLevel1()
{
string sql = "insert into category(id,parentId,name,displayOrder)values(@id,@parentId,@name,@displayOrder)";
using (SQLiteConnection connection = new SQLiteConnection("Data Source=D:\\category.db"))
{
connection.Open();
using (DbTransaction transaction = connection.BeginTransaction())
{
using (SQLiteCommand command = new SQLiteCommand(sql, connection))
{
command.Parameters.Add(new SQLiteParameter("@id", DbType.Int32));
command.Parameters.Add(new SQLiteParameter("@parentId", DbType.Int32));
command.Parameters.Add(new SQLiteParameter("@name", DbType.String));
command.Parameters.Add(new SQLiteParameter("@displayOrder", DbType.Byte));
for (int i = 1; i <= Level1; i++)
{
command.Parameters["@id"].Value = i;
command.Parameters["@parentId"].Value = 0;
command.Parameters["@name"].Value = string.Format("Level_{0}_Name_{1}", i, i);
command.Parameters["@displayOrder"].Value = random.Next(1, 256);
command.ExecuteNonQuery();
}
}
transaction.Commit();
}
}
}
...全文
575 41 打赏 收藏 转发到动态 举报
写回复
用AI写文章
41 条回复
切换为时间正序
请发表友善的回复…
发表回复
村长_乐 2010-08-26
  • 打赏
  • 举报
回复
lz单步调试,然后看看是什么错
不是关键字吧?
没用过这个数据库的路过...
bios8086 2010-08-26
  • 打赏
  • 举报
回复
string sql = "INSERT INTO [YTC] ([ID],[Contours],[HalfContours]) VALUES(@ID,@C,@H)";
SQLiteConnection connection = new SQLiteConnection(@"Data Source=d:/我的文档/Visual Studio 2008/Projects/WriteConoursToDB/WriteConoursToDB/bin/Debug/NewDB.sqlite");
connection.Open();
SQLiteTransaction transaction = connection.BeginTransaction();
SQLiteCommand command = new SQLiteCommand(sql, connection);
command.Parameters.Add(new SQLiteParameter("@ID", DbType.Int32));
command.Parameters.Add(new SQLiteParameter("@C", DbType.String));
command.Parameters.Add(new SQLiteParameter("@H", DbType.String));
command.Parameters["@ID"].Value = 4587;
command.Parameters["@C"].Value = Value;
command.Parameters["@H"].Value = Value;
command.ExecuteNonQuery();
transaction.Commit();
command.Dispose();
connection.Close();
connection.Dispose();
transaction.Dispose();
上传一个 可以插入的版本,网上很多版本都是不行的! 这样大家以后碰到类似的问题 ,可以直接仿照我的例子了!也不枉我花费了一个晚上的时间,搞这个简单的问题!
bios8086 2010-08-26
  • 打赏
  • 举报
回复
[Quote=引用 38 楼 jointan 的回复:]
引用 37 楼 bios8086 的回复:
string sql = "INSERT INTO [YTC] ([ID]) VALUES(@ID)";
SQLiteConnection connection = new SQLiteConnection(@"Data Source=d:/我的文档/Visual Studio 2008/Projects/WriteConoursToDB/Write……
[/Quote]

OK,早上起来看到你的回复,试了下可以了!谢谢你的帮助!
jointan 2010-08-25
  • 打赏
  • 举报
回复
[Quote=引用 37 楼 bios8086 的回复:]
string sql = "INSERT INTO [YTC] ([ID]) VALUES(@ID)";
SQLiteConnection connection = new SQLiteConnection(@"Data Source=d:/我的文档/Visual Studio 2008/Projects/WriteConoursToDB/WriteConoursToDB/bin/Debug……
[/Quote]
我没接触过SQLite,不过以我操纵别的数据库的经验,认为:
你在connection.Close();之前,少了句transaction.Commit();

另外:
myparam.Value = 34;
command.Parameters["@ID"].Value = 4587;
会导致成功时被插入的值,是4587,而不是34
bios8086 2010-08-25
  • 打赏
  • 举报
回复
string sql = "INSERT INTO [YTC] ([ID]) VALUES(@ID)";
SQLiteConnection connection = new SQLiteConnection(@"Data Source=d:/我的文档/Visual Studio 2008/Projects/WriteConoursToDB/WriteConoursToDB/bin/Debug/NewDB.sqlite");
connection.Open();
SQLiteTransaction transaction = connection.BeginTransaction();
SQLiteCommand command = new SQLiteCommand(sql, connection);
SQLiteParameter myparam = new SQLiteParameter("@ID",DbType.Int32);
command.Parameters.Add(myparam);
myparam.Value = 34;
command.Parameters["@ID"].Value = 4587;
command.ExecuteNonQuery();

command.Dispose();
connection.Close();
connection.Dispose();
transaction.Dispose();
试了好几种方法 不会报 INSErT语句错误了,但是就是没法存进去! 和无奈啊!!!
bios8086 2010-08-25
  • 打赏
  • 举报
回复
搞的快要崩溃了 整了一晚上!
谁能给个简单的例子插入 传给我 不胜感激!!!!
bios8086@126.com
我是一道光_ 2010-08-25
  • 打赏
  • 举报
回复

恩,一般就是单步执行,检查一下你需要的sql字符串是否有问题,空格呀,关键字呀,都要注意的哈。
检查一下你insert 的各个字段是否正确,字段数和values值的个数要相等。

  • 打赏
  • 举报
回复
[Quote=引用 20 楼 sire168 的回复:]
你单步执行,跟到到这里看看不就明白了!
[/Quote]

一般就搞定了
bios8086 2010-08-25
  • 打赏
  • 举报
回复
似乎发现点问题了
SQLite里的语句 和其他的数据库 似乎不太一样
INSERT INTO "YTC" VALUES(55, 'This is sample data', 'lala');

表的名字需要加双引号
不知道这种在C#里怎么写!
q107770540 2010-08-25
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 bios8086 的回复:]

我数据库里 创建的 是TEXT类型!
[/Quote]
修改成nvarchar试试
bios8086 2010-08-25
  • 打赏
  • 举报
回复
我数据库里 创建的 是TEXT类型!
cjh200102 2010-08-25
  • 打赏
  • 举报
回复
应该是类型对应不上。
bios8086 2010-08-25
  • 打赏
  • 举报
回复
insert into YuanTongContours(HalfContours) value('dsdasdasd')

发现点问题了
在SQLite Manager 里面 执行 这条SQL语句 都不行!
bios8086 2010-08-25
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 xiongxyt2 的回复:]

你找这里的改改试试。
[/Quote]

您这个是数据库 和我用的不一样!
我看了下 好像没什么区别!
xiongxyt2 2010-08-25
  • 打赏
  • 举报
回复
bios8086 2010-08-25
  • 打赏
  • 举报
回复
实在要崩溃了,不行我只能手工添加数据了
bios8086 2010-08-25
  • 打赏
  • 举报
回复
SQLite error
near "insert into YTC": syntax error
bios8086 2010-08-25
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 shixin0510 的回复:]

@displayOrder 看看这个数据带进去得到的sql语句是什么 然后到数据库执行一下 如果数据库执行不成功的话 你就知道问题在哪里了
[/Quote]
------------------
@displayOrder 不太明白 您的意思
  • 打赏
  • 举报
回复
@displayOrder 看看这个数据带进去得到的sql语句是什么 然后到数据库执行一下 如果数据库执行不成功的话 你就知道问题在哪里了
  • 打赏
  • 举报
回复
Level1 这个变量是多少啊,有没有进这个循环还不一定呢,你调试看看有没有进入这个循环,如果没有进入这个循环的话,你的当然会报那个错误啦
加载更多回复(21)

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧