我正在编写一个连接到 ODAC 的 C# 代码。我认为我的查询没有错误,但我收到此错误,我不知道如何解决。
这是我的查询
comm.CommandText = "SELECT * FROM ZAEDBA WHERE USER_ID = '" + login_id +
"' AND APPID = '" + app_id + "' ;";
任何人都可以弄清楚这里有什么问题吗?
我正在编写一个连接到 ODAC 的 C# 代码。我认为我的查询没有错误,但我收到此错误,我不知道如何解决。
这是我的查询
comm.CommandText = "SELECT * FROM ZAEDBA WHERE USER_ID = '" + login_id +
"' AND APPID = '" + app_id + "' ;";
任何人都可以弄清楚这里有什么问题吗?
您的查询容易受到称为SQL 注入的安全问题的影响!
您永远不应该使用字符串连接来从字符串(一些 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);
为什么;
你的sql命令中有a?试试这个;
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;