C#의 MySQL 데이터베이스에서 SQL 쿼리를 실행하기 전에 실행될 쿼리를 기록하려고합니다. 내가 지금 무엇을 가지고 있는지 분명히 기록하고 있습니다 SELECT * FROM foo WHERE Id = @Id
SELECT * FROM foo WHERE Id = 5
을보고 싶습니다. 어떻게해야합니까?DbCommand에서 매개 변수가있는 SQL 쿼리 문자열 얻기
DbCommand dbCommand = dbFactory.CreateCommand();
dbCommand.CommandText = "SELECT * FROM foo WHERE Id = @Id";
DbParameter param = dbCommand.CreateParameter();
param.ParameterName = "@Id";
param.Value = 5;
dbCommand.Parameters.Add(param);
dbConnection.Open();
Log.AddVerbose(String.Format("SQL query: {0}", dbCommand.CommandText));
dbCommand.ExecuteReader();
** 실제 사용하는 구체적인 데이터베이스 시스템 **에 따라 다릅니다 ** 쿼리 언어로 ** SQL **를 사용하는 모든 관계형 데이터베이스가 정확히 같은 방식으로 작동합니다 ..... 관련 데이터베이스 시스템으로 태그를 업데이트하십시오! –
해당 데이터베이스 시스템은 MySQL입니다. 업데이트 된 게시물과 추가 된 태그입니다. – BioGeek
이것은 DB 시스템에 따라 다르지만 사용하고자하는 DB에 대해서는 찾고있는 문자열이 ** 존재하지 않습니다 **, 데이터베이스 서버에는 없습니다 . 이것이 매개 변수화 된 쿼리의 핵심입니다. 코드에서 데이터를 분리해야합니다. 그래서 쿼리 매개 변수가 SQL 주입 공격을 막는 데 핵심적인 역할을합니다. 악의적 인 데이터는 SQL 문자열 가까이에 존재하지 않습니다. –