INSERT INTO 语句的语法错误,大家帮忙解决

kart15 2009-03-03 12:07:51
代码
public bool Add(String Name, String Houtai, String Member, String Product)
{
String T_name = Name;

String T_Houtai = Houtai;

String T_Member = Member;

String T_Product = Product;

string sql = "insert into Level ([Lname],[Houtai],[Member],[Product]) values (@Name,@Houtai,@Member,@Product)";

OleDbCommand cmd = new OleDbCommand(sql, con);

cmd.Parameters.Add(new OleDbParameter("@Name", OleDbType.VarChar, 50));
cmd.Parameters["@Name"].Value = T_name;


cmd.Parameters.Add(new OleDbParameter("@Houtai", OleDbType.VarChar, 10));
cmd.Parameters["@Houtai"].Value = T_Houtai;


cmd.Parameters.Add(new OleDbParameter("@Member", OleDbType.VarChar, 10));
cmd.Parameters["@Member"].Value = T_Member;


cmd.Parameters.Add(new OleDbParameter("@Product", OleDbType.VarChar, 10));
cmd.Parameters["@Product"].Value = T_Product;

int Result = -1;

try
{
con.Open();

Result = cmd.ExecuteNonQuery();

if (Result != -1)
{
return true;
}
else
{
return false;
}
}
catch (Exception ex)
{
throw (ex);
}
finally
{
con.Close();
}
return false;
}
请大家帮我看看是怎么回事
...全文
162 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Adechen 2009-03-03
  • 打赏
  • 举报
回复
Level 在sql server好像是关键字吧,就如User一样,使用时要加[]
kart15 2009-03-03
  • 打赏
  • 举报
回复
[Level]后,错误变为“操作必须使用一个可更新的查询”
青梦奇缘 2009-03-03
  • 打赏
  • 举报
回复
是不是你把所有的变量全都包含在一个 " " 中!
而不是用+号连接的!
这样你提交到数据库的语句是:
insert into Level ([Lname],[Houtai],[Member],[Product]) values (@Name,@Houtai,@Member,@Product)
而@Name,@Houtai,@Member,@Product在这几个在这条语句中充当原始字符串的角色,而不是变量
不知道我理解的对不
wuyq11 2009-03-03
  • 打赏
  • 举报
回复
[Level]看看
kart15 2009-03-03
  • 打赏
  • 举报
回复
有连接,报的错“INSERT INTO 语句的语法错误”
LXHGDDY 2009-03-03
  • 打赏
  • 举报
回复
没看出有错啊,我建议楼主把错误也粘出来,

我觉得5楼说的情况不会出现吧,

如果没有con那错误不应该是insert的错啊,

该报数据连接的错啊
limpid_123 2009-03-03
  • 打赏
  • 举报
回复
OleDbConnection con=new OleDbConnection(ServerStr)

wuyq11 2009-03-03
  • 打赏
  • 举报
回复
什么错误,逻辑上没问题
clever_yang 2009-03-03
  • 打赏
  • 举报
回复
请问CON到哪里定义的啊???
clever_yang 2009-03-03
  • 打赏
  • 举报
回复
CON 未定义??
king19840811 2009-03-03
  • 打赏
  • 举报
回复
看上去没什么错误
hecong875 2009-03-03
  • 打赏
  • 举报
回复
抱什么错啊?
LifeChina555 2009-03-03
  • 打赏
  • 举报
回复
你现在insert时出了什么问题
北京的雾霾天 2009-03-03
  • 打赏
  • 举报
回复
是不是Level 也要加上方括号。
jwdream2008 2009-03-03
  • 打赏
  • 举报
回复
[Level]后;
错误变为“操作必须使用一个可更新的查询”
原因:
有几个主要的错误原因:
这个错误发生在当你的程序试图执行更新数据库或其它类似操作时。这是因为
ADO由于以下的几个原因而不能够写数据库造成的。
1、最普遍的原因是匿名用户帐号(IUSR_MACHINE)对该数据库文件没有写权限。
 要解决这个问题,在管理器中调整数据库文件的属性,让匿名用户有正确的权限。当使用ACCESS数据库时,不仅要给文件写的权限,还要给该目录写 的权限,因为Jet需要在该目录建立一个.ldb文件。
2、第二个原因是数据库没有使用正确的模式打开。应该使用下面的方法打开。
  SQL = "UPDATE Products Set UnitPrice = 2;"
  Set Conn = Server.CreateObject("ADODB.Connection")
  Conn.Mode = 3   '3 = adModeReadWrite
  Conn.Open "myDSN"
  Conn.Execute(SQL)
  Conn.Close
  注意默认的Mode是设置0(adModeUnknown),它是允许更新的。
3、还有可能是在ODBC管理器中将该DSN的只读选项选中。
4、你是在同时更新两个表中的字段,也会出现这个错误信息,解决办法是分开来更新这两个表中各自字段。
5、当你使用了一个从低版本中(如ACCESS2.0,ACCESS7.0)载入到高版本(ACCESS 2000)中的查询时,在执行这个查询是会出现该错误。
clever_yang 2009-03-03
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 kart15 的回复:]
[Level]后,错误变为“操作必须使用一个可更新的查询”
[/Quote]

这个错误,请注意你是否有修改ACCESS数据库的权限~。。。

安全选项卡--》把EVERYONE添加进去试下~

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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