当前位置:编程学习 > C#/ASP.NET >>

请教C# oracle当中SQL语句的问题

ssql = "INSERT INTO USER_PROFILE(USER_ID, GROUP_ID, PASS, USER_NAME, TEL, RID) VALUES(UID.NEXTVAL, '" + textBoxWorkGroup.Text.Trim() + "' , '" + textBoxPass.Text.Trim() + "', '" + textBoxName.Text.Trim() + "','" + textBoxTel.Text.Trim() + "','" + comboBoxRoles.Text.Trim() + "')";

调试后报错:“缺少逗号”,
但是在查询分析器里面执行语句的时候却没有问题。
请问是什么原因?

           --------------------编程问答-------------------- 我没仔细看,不过建议你用类似这种方式:
ssql   =   "INSERT   INTO   USER_PROFILE(USER_ID,   GROUP_ID,   PASS,   USER_NAME,   TEL,   RID)   VALUES(:USERID, :GROUP_ID,   :PASS,   :USER_NAME,   :TEL,   :RID)

cmd.Parameters.AddWithValue("USERID", UID.NEXTVAL);
cmd.Parameters.AddWithValue("GROUP_ID",textBoxWorkGroup.Text.Trim());
cmd.Parameters.AddWithValue("PASS", textBoxPass.Text.Trim());
cmd.Parameters.AddWithValue("USER", textBoxName.Text.Trim());
cmd.Parameters.AddWithValue("TEL", textBoxTel.Text.Trim());
cmd.Parameters.AddWithValue("RID", comboBoxRoles.Text.Trim());

--------------------编程问答-------------------- 拼凑sql命令的做法的确不可取,不过看你的命令应该没有问题,请调试一下,把ssql值贴出来看看吧

另外你所谓的"查询分析器里面执行语句的时候却没有问题",指的是调试时ssql的值吗? --------------------编程问答-------------------- 是的,ssql在VS开发环境里面的查询分析器里面执行没有问题。 --------------------编程问答-------------------- ssql   =   "INSERT   INTO   user.USER_PROFILE(USER_ID,   GROUP_ID,   PASS,   USER_NAME,   TEL,   RID)   VALUES(UID.NEXTVAL,   '"   +   textBoxWorkGroup.Text.Trim()   +   "'   ,   '"   +   textBoxPass.Text.Trim()   +   "',   '"   +   textBoxName.Text.Trim()   +   "','"   +   textBoxTel.Text.Trim()   +   "','"   +   comboBoxRoles.Text.Trim()   +   "')"; 
--------------------编程问答-------------------- 问题还是没有解决,请大虾赐教! --------------------编程问答-------------------- 1楼正解! --------------------编程问答-------------------- 你把SQL输出就行了,放在PL/SQL里执行,看看哪里出错了!!!
Response.Write ( ssql); --------------------编程问答-------------------- 一楼的解我试过了,还是不行 --------------------编程问答--------------------                                                                                  *
在ORACLE的PL/SQL里执行

INSERT INTO USER_PROFILE(USER_ID, GROUP_ID, PASS, USER_NAME, TEL, RID) VALUES(UID.NEXTVAL, '" + textBoxWorkGroup.Text.Trim() + "' , '" + textBoxPass.Text.Trim() + "', '" + textBoxName.Text.Trim() + "','" + textBoxTel.Text.Trim() + "','" + comboBoxRoles.Text.Trim() + "');
提示:
ERROR 位于第 1 行:
ORA-00917: 缺少逗号
--------------------编程问答-------------------- 我是用的出c/s模式,请问里面可以加
Response.Write   (   ssql);
进行调试嘛? --------------------编程问答-------------------- string.format(@" insert into tablename values('{0}','{1}','{2}')",textbox1.text.....)
这种方法可以看清楚的..你这样拼起来看得太累.很容易出错..万一加个字段你又得换. --------------------编程问答-------------------- string sql = string.format(@"   insert   into   tablename   values('{0}','{1}','{2}')",textbox1.text.....) 
--------------------编程问答-------------------- jf~ --------------------编程问答-------------------- 好像和UID.NEXTVAL有关 --------------------编程问答-------------------- 你用Console.WriteLine(sql);输出来看看,这个语句到底是什么东西? --------------------编程问答-------------------- 我对 ADO.NET 操作 Oracle 仅存的几点印象之一就是语句结尾得写“;”,不像 SQL Server 可写可不写。
现在早就没了环境,也不能调一下看看……分析一下实际出来的 SQL 语句还是应该很有帮助的。
除了楼上诸位的建议,也可通过调试来查看 ssql 这个字符串变量的值。 --------------------编程问答-------------------- 用参数吧,方便还安全 --------------------编程问答-------------------- ssql   =   "INSERT   INTO   USER_PROFILE(USER_ID,   GROUP_ID,   PASS,   USER_NAME,   TEL,   RID)   VALUES('"+UID.NEXTVAL +"',   '"   +   textBoxWorkGroup.Text.Trim()   +   "'   ,   '"   +   textBoxPass.Text.Trim()   +   "',   '"   +   textBoxName.Text.Trim()   +   "','"   +   textBoxTel.Text.Trim()   +   "','"   +   comboBoxRoles.Text.Trim()   +   "')"; 
--------------------编程问答-------------------- 没啥可以说的了 --------------------编程问答-------------------- 打断点跟踪从各控件取到值后生成的sql语句的文本看是什么样子的。
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,