C# 獲取數據庫最終執行的SQL語句(土方法)


1.給DbCommand抽象類添加一個擴展方法

 1     /// <summary>
 2     /// 給DbCommand抽象類添加一個擴展方法
 3     /// 生成一個最終執行的SQL語句
 4     /// </summary>
 5     public static class DcCommandHelper
 6     {
 7         public static string GetExecutedCommand(this DbCommand dbCommand, string commandText, IDbDataParameter[] dbDataParameters)
 8         {
 9             foreach (var parameter in dbDataParameters)
10             {
11                 string pname = parameter.ParameterName;
12                 string pvalue = Convert.ToString(parameter.Value);
13                 commandText = commandText.Replace(pname, pvalue);
14             }
15             return commandText;
16         }
17     }

2.實際使用案例

 1         public static object ExecuteScalar(string commandText, params IDbDataParameter[] dbDataParameters)
 2         {
 3             using (DbConnection conn = DbFactory.CreateDbConnection(connString, providerName))
 4             {
 5                 conn.Open();
 6                 DbCommand cmd = CreateDbCommand(conn, commandText, CommandType.Text, dbDataParameters);
 7                 string sqlCommand = cmd.GetExecutedCommand(commandText, dbDataParameters);
 8                 Console.WriteLine(sqlCommand);
 9                 return cmd.ExecuteScalar();
10             }
11         }
 1     class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             string sql = "select * from dbo.aspnet_Users where UserName = @UserName or UserId =@UserId";
 6             DAL.DbHelper.ExecuteScalar(sql,
 7                 new SqlParameter("@UserName", "admin"),
 8                 new SqlParameter("@UserId", "522C7EFE-DC3A-45E8-B101-DFFDC005CC68"));
 9             Console.ReadKey();
10         }
11     }

3.控制台窗口執行結果:select * from dbo.aspnet_Users where UserName = admin or UserId =522C7EFE-DC3A-45E8-B101-DFFDC005CC68

 

 

PS:說白了就是字符串替換而已。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM