首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Odac ORA-00911:无效字符

Odac ORA-00911:无效字符
EN

Stack Overflow用户
提问于 2012-12-16 19:37:19
回答 2查看 1.7K关注 0票数 2

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

这是我的问题

代码语言:javascript
复制
comm.CommandText = "SELECT * FROM ZAEDBA WHERE USER_ID = '" + login_id + 
                   "' AND APPID = '" + app_id + "' ;"; 

有谁能找出这里出了什么问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-16 19:39:59

您的查询容易受到称为SQL injection的安全问题的攻击!

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

示例代码:

代码语言:javascript
复制
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);
票数 4
EN

Stack Overflow用户

发布于 2012-12-16 19:42:52

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

代码语言:javascript
复制
comm.CommandText = "SELECT * FROM ZAEDBA WHERE USER_ID = '" + login_id + "' AND APPID = '" + app_id "';

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

代码语言:javascript
复制
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;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13900906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档