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