-1

私はあなたの助けが少し必要です

私のWebアプリケーションにはこのSelectステートメントがありますが、実行すると0データが取得されますがSelect、データベースでステートメントを試すとデータが含まれており、Selectステートメントは正しいです。サーバ。

これが私のコードです

string SelectStatement = "SELECT DATEDIFF(day, kg1653, GETDATE()) datenum, kg1635, (CASE WHEN kg1637 is null THEN 0 END) eis ";
string FromStatement = "FROM hsi.keygroupdata503 ";
string WhereStatement = "WHERE kg1235='" + _securityCode + "' and kg1241 is null";
_sqlDT = ConnectToDatabase(SelectStatement + FromStatement +  WhereStatement);

ここに私の接続文字列があります

System.Data.Odbc.OdbcConnection _odbcConn = new System.Data.Odbc.OdbcConnection();
_odbcConn.ConnectionString = "MY DATABASE CONNECTION STRING";

System.Data.Odbc.OdbcDataAdapter _odbcA = new System.Data.Odbc.OdbcDataAdapter(sqlQuery1, _odbcConn);
DataTable _odbcDt = new DataTable();
_odbcA.Fill(_odbcDt);

return _odbcDt;

誰かがこれで私を助けてくれますか?

どうもありがとう!

4

1 に答える 1

0

sqlQuery1 が _sqlDT に設定されるのはいつですか ... 最善の策は、デバッグして、呼び出されている行でクエリが正しいことを確認し、それをコピーして SQL サーバーで実行することです。 . また、同様のテーブル名を持つテスト環境がある場合は、同じライブ インスタンスに接続していることを確認してください。

上記のコメンターが言ったように、絶対確実ではありませんが、_securityCodeにreplaceステートメントがあり、すべての一重引用符を二重引用符に変更して、SQLインジェクションに対抗できることを確認してください。

于 2013-09-10T15:39:06.820 に答える