Odac ORA-00911:无效字符

时间:2012-12-16 11:37:19

标签: c# sql odac oraclecommand

我正在编写一个连接到ODAC的C#代码。我认为我的查询没有错误,但我得到了这个错误,我不知道如何解决。

这是我的查询

comm.CommandText = "SELECT * FROM ZAEDBA WHERE USER_ID = '" + login_id + 
                   "' AND APPID = '" + app_id + "' ;"; 

任何人都可以弄清楚这里有什么问题吗?

2 个答案:

答案 0 :(得分:4)

您的查询容易出现名为SQL injection的安全问题!

你永远不应该使用字符串连接来构建字符串查询(一些SQL,一些参数)......使用始终参数化的查询......

示例代码:

comm.BindByName = true;
comm.CommandText = "SELECT * FROM ZAEDBA WHERE USER_ID = :login_id AND APPID = :app_id";
comm.Parameters.AddWithValue ("login_id", login_id);
comm.Parameters.AddWithValue ("app_id", app_id);

答案 1 :(得分:1)

为什么sql命令中有;?试试这个;

comm.CommandText = "SELECT * FROM ZAEDBA WHERE USER_ID = '" + login_id + "' AND APPID = '" + app_id "';

顺便说一句,您应该始终使用参数化查询。这显然是一个SQL注入开放。对于您的查询,请像这样使用;

string commandText = "SELECT * FROM ZAEDBA WHERE USER_ID = @login_id " + AND
        + "WHERE APPID  = @app_id;";

command.Parameters.Add("@login_id", SqlDbType.Int);
command.Parameters["@login_id"].Value = login_id;

command.Parameters.Add("@app_id", SqlDbType.Int);
command.Parameters["@app_id"].Value = app_id;