逐行读取richtextBox以运行oracle Command?

时间:2014-03-15 19:46:07

标签: c#

我有一个包含多个insert语句的Rich Text Box,我想要做的是运行我的richtextbox中的所有insert语句。但是有以下错误。

讯息= ORA-00911:无效字符 当我打开Text可视化工具以查看richTextBox.Text表达式时,我的值位于richTextBox.Text中,如下所示:

INSERT INTO TBLMESS (ID, TEXT) VALUES ('1','hello');
INSERT INTO TBLMESS (ID, TEXT) VALUES ('2','hello');
INSERT INTO TBLMESS (ID, TEXT) VALUES ('3','hello');
INSERT INTO TBLMESS (ID, TEXT) VALUES ('4','hello');
INSERT INTO TBLMESS (ID, TEXT) VALUES ('5','hello');
INSERT INTO TBLMESS (ID, TEXT) VALUES ('6','hello');

代码:

   conn1.Open();
   OracleCommand cmd = new OracleCommand(richTextBoxScript.Text, conn1);
   cmd.ExecuteNonQuery();

1 个答案:

答案 0 :(得分:0)

那么我们如何在一个命令中运行多个语句?嗯,合理的第一个猜测可能是将多个语句直接添加到我们的SQL字符串中,并将它们与典型的“;”分隔符分开:

var sql = @"INSERT INTO TEST_TABLE( NKEY, STEXT ) VALUES( 123, 'HELLO WORLD' );
              INSERT INTO TEST_TABLE( NKEY, STEXT ) VALUES( 456, 'HELLO AGAIN' );";

不幸的是,这不适用于Oracle;尝试它,你会得到一个看起来像这样的错误:

Oracle.DataAccess.Client.OracleException:ORA-00911:无效字符。

信息性,不是吗?幸运的是,解决方案非常简单:在匿名PL / SQL块中包含语句:

 var sql = @"BEGIN
            INSERT INTO TEST_TABLE( NKEY, STEXT ) VALUES( 123, 'HELLO WORLD' );
            INSERT INTO TEST_TABLE( NKEY, STEXT ) VALUES( 456, 'HELLO AGAIN' );
            END;";

真的可以这么简单吗?嗯,是的