为什么这个SQL insert into table语句在C#中不起作用?

为什么这个SQL insert into table语句在C#中不起作用?,c#,sql,insert,oracle11g,C#,Sql,Insert,Oracle11g,执行EXCEUTENONQUERY时,我得到一个ORAC 0936。我想我的问题是SQL中的值部分。提前谢谢你的帮助 public int NewFunction(int UserID, string fName, string fDescription, string connectionStr) { OracleConnection connection = new OracleConnection(connectionStr);

执行EXCEUTENONQUERY时,我得到一个ORAC 0936。我想我的问题是SQL中的值部分。提前谢谢你的帮助

public int NewFunction(int UserID, string fName, string fDescription, string connectionStr)
        {
            OracleConnection connection = new OracleConnection(connectionStr);
            try
            {
                //PLease Note that User ID and  fDescription are passed into the function as  
//parameters
                connection.Open();

                OracleCommand command = connection.CreateCommand();

                OracleTransaction transaction = connection.BeginTransaction();
                command.Transaction = transaction;
                        string LoadedFileName = @WfName;//Fd.FileName;
               //read the xaml content from file 
                command.CommandText = "INSERT INTO XYZ(ID, NAME , F_SCRIPT) VALUES (@UserID, @fDescription, EMPTY_CLOB())";

                command.ExecuteNonQuery();
                transaction.Commit();
               }
////////////////////////////////////////////////////////////////////// //************************************ //好的,谢谢你的回复。这就是我如何让它工作的,使用stackckoverflow的其他帖子来回答其他问题。请注意,fDescription和USerID正在传递给函数


command.CommandText=“插入IMS_工作流(ID、名称、F_脚本)值(“+UserID+”、“+WfDescription+”、空_CLOB())”

我可能遗漏了一些内容,但我看不到您将参数@UserID或@fddescription添加到命令对象的参数集合的位置。添加这些参数,我想你应该会没事。

我可能遗漏了一些东西,但我看不出你在哪里将参数@UserID或@fddescription添加到命令对象的参数集合中。添加这些,我想您应该不会有问题。

您的原始代码似乎在尝试使用参数化SQL:

command.CommandText = "INSERT INTO XYZ(ID, NAME , F_SCRIPT) VALUES (@UserID, @fDescription, EMPTY_CLOB())";
。。。但是您从未设置参数的值,它使用SQL Server样式的名称(
@
前缀而不是
)。您需要正确声明参数,并为其指定值,例如

command.CommandText = "INSERT INTO XYZ(ID, NAME , F_SCRIPT) VALUES (:UserID, :fDescription, EMPTY_CLOB())";
command.Parameters.Add("UserId", OracleType.Number).Value = userId;
command.Parameters.Add("fDescription", OracleType.NVarChar).Value = fDescription;
(有可能
@
的前缀也会起作用;我只举文档中的例子。)


您的解决方法是将值直接嵌入到SQL中不要这样做。您正在邀请。

您的原始代码似乎在尝试使用参数化SQL:

command.CommandText = "INSERT INTO XYZ(ID, NAME , F_SCRIPT) VALUES (@UserID, @fDescription, EMPTY_CLOB())";
。。。但是您从未设置参数的值,它使用SQL Server样式的名称(
@
前缀而不是
)。您需要正确声明参数,并为其指定值,例如

command.CommandText = "INSERT INTO XYZ(ID, NAME , F_SCRIPT) VALUES (:UserID, :fDescription, EMPTY_CLOB())";
command.Parameters.Add("UserId", OracleType.Number).Value = userId;
command.Parameters.Add("fDescription", OracleType.NVarChar).Value = fDescription;
(有可能
@
的前缀也会起作用;我只举文档中的例子。)



您的解决方法是将值直接嵌入到SQL中不要这样做。您正在邀请。

我看不到您正在填充参数的迹象。。。您从未使用过
fName
fddescription
参数。感谢您的回复。fDescription被传递给函数。fName是一个多余的变量,我甚至不应该在代码中包含它。我找到了我的答案,并把它添加到我的问题中。请免费评论,因为这是我发现的工作。无论这是不是一个首选的方式,我有兴趣知道。再次感谢。好的
fDescription
传递给了方法-但它根本没有传递给数据库。您的解决方案会引发SQL注入攻击,请不要使用。谢谢。那我该怎么做呢?如果语法正确,我将不胜感激。请看我的答案。如果这不起作用,请提供详细信息,而不仅仅是你在另一个答案上留下的“它不起作用”。我看不到任何迹象表明你正在填充参数。。。您从未使用过
fName
fddescription
参数。感谢您的回复。fDescription被传递给函数。fName是一个多余的变量,我甚至不应该在代码中包含它。我找到了我的答案,并把它添加到我的问题中。请免费评论,因为这是我发现的工作。无论这是不是一个首选的方式,我有兴趣知道。再次感谢。好的
fDescription
传递给了方法-但它根本没有传递给数据库。您的解决方案会引发SQL注入攻击,请不要使用。谢谢。那我该怎么做呢?如果语法正确,我将不胜感激。请看我的答案。如果这不起作用,请提供详细信息,而不仅仅是你在另一个答案上留下的“它不起作用”。谢谢。我确实添加了参数,但它不起作用。我发现我的问题在于语法。。我会用我找到的解决方案更新我的问题,请免费发表评论,因为这是我发现有效的方法。不管这是不是一种错误的方式,我很想知道。再次感谢,谢谢。我确实添加了参数,但它不起作用。我发现我的问题在于语法。。我会用我找到的解决方案更新我的问题,请免费发表评论,因为这是我发现有效的方法。不管这是不是一种错误的方式,我很想知道。再次感谢,非常感谢。你的建议奏效了。你能告诉我select语句的正确语法吗。如果你愿意的话,我可以用一个单独的问题来回答。command.CommandText=“从XYZ中选择F_脚本,其中ID=”“+UserID+”,用于更新”@用户1298925:根据我现有的答案,你试过什么?你需要愿意为自己做一些工作,围绕一个主题阅读。你不明白为什么不应该在SQL中直接包含值吗?事实上,我自己一直在试图找到答案,但我还没有测试它。我在想,当我尝试不同的解决方案时,也许正确的答案也在这里。这是我未经测试的解决方案。command.CommandText=“从XYZ中选择F_脚本,其中ID=:UserID和“+”NAME=:fDescription“+”用于更新”;command.Parameters.Add(“UserID”,OracleType.Number).Value=UserID;command.Parameters.Add(“fddescription”,OracleType.NVarChar).Value=fddescription;非常感谢你。你的建议奏效了。你能告诉我select语句的正确语法吗。如果你愿意的话,我可以用一个单独的问题来回答。command.CommandText=“从XYZ中选择F_脚本,其中ID=”“+UserID+”,用于更新”@用户1298925:根据我现有的答案,你试过什么?你需要愿意为自己做一些工作,围绕一个主题阅读。你不明白为什么你不应该包括在内吗