2
private int GetId(int userId, int companyId){
    string query = String.Format("SELECT Id FROM MyTable WHERE UserId = {0} AND CompanyId = {1}", userId, companyId);
    return _db.ExecuteSqlCommand(query);
}

Microsoft の SQL Management Studio を介してクエリを実行すると、15 が返されます。コード内でクエリを実行するたびに、-1 が返されます。

MSDN APIの状態:

戻り値

タイプ: System.Int32

コマンドの実行後にデータベースから返された結果。

説明は非常にあいまいで、私がそれをどのように使用しているかはうまくいくはずです. クエリを操作して 15 を返すにはどうすればよいですか、それとも不可能ですか? そうでない場合、誰か推奨事項はありますか?

4

1 に答える 1

1

「SELECT」ステートメントなど、データを返すコマンドを実行する場合は、SqlQuery メソッドの使用を検討する必要があります。ExecuteSqlQuery は、通常、データを返さない「UPDATE」などのステートメントの DDL/DML コマンドと見なされます。

さらに、このようなクエリは常にパラメーター化する必要があります。書かれているように、SQL インジェクション攻撃に対して脆弱です。

于 2015-07-07T15:20:30.940 に答える