问题是这样的:
在程序中写的sql语句是带参数的,如:
string s="update aaa set id=@id,name=@name,sex=@sex";
然后通过SqlCommand来对各个参数进行赋值等操作,可是,我想看看执行的时候这个sql语句是什么样的,也就是说想拿到查询分析器中去执行一下,该怎么看啊?带参数的设断点的话,看到的这个sql语句也是="update aaa set id=@id,name=@name,sex=@sex";
这也没办法执行啊,还有就是,不知道这个SqlCommand.Parameters.Add(参数) 这句话如果将值加到sql语句中会变成什么样子啊?
这个语句是通过SqlCommand来加变量的,而普通的是就在sql中拼接,直接拼接的就可以知道sql执行的什么样,可是这种带参数的,怎么知道sql语句最终是什么样啊?我的意思就是:
在程序中加了断点之后,跟踪sql语句时,
如果id,name,sex三个变量在程序中付了值都知道,那么:
我知道这个语句在执行时,是什么样子(可以拿到查询分析器中去执行):
string s="update aaa set id='"+id+"',name='"+name+"',sex='"+sex"'";
而不知道这个语句在执行时,是什么样子?
string s="update aaa set id=@id,name=@name,sex=@sex";
这三个参数:@id,@name,@sex是通过SqlCommand加入到sql中的,在查看sql语句的时候,sql始终是="update aaa set id='"+id+"',name='"+name+"',sex='"+sex"'";
请大家执教,该怎么能看到这种带参书的sql语句啊?

解决方案 »

  1.   

    sql server吗? 时间跟踪器跟踪一下
      

  2.   

    sql server中的sql profiler
      

  3.   


    sql server自带的工具..中文名不知道叫啥..profiler.exe就这个..你打开试试就知道了.可以跟踪sql
      

  4.   

    打开sql profiler后.
    file-->new-->trace
    连接完后.
    run执行你的查询..然后回到profiler中看一下
      

  5.   

    通过SqlCommand加入到sql中去,前面的变量何不单独拿出变量单独进行跟踪呢
    感觉在sql语句,不容易进行跟踪动态型的.
    感觉可以通过存储过程接收变量赋值,然后select,这样可以得到数据
      

  6.   

    sql事件探查器 连接好就可以
      

  7.   

    我记得sql profiler得到的也是带参数的sql语句
      

  8.   

    其实lz这么做也没有太大意义,首先如果你只是为了检查sql语句是否错误的话,完全可以通过其它途径检查。如果只是为了查看结果的话,在程序中和在sql中不都一样吗。而且有些sql参数是不能转为sql语句的,比如二进制数据。
      

  9.   

    sql server自带的工具..中文名不知道叫啥.. profiler.exe就这个..你打开试试就知道了.可以跟踪sql
    ===
    请问:sql server2000中有那个吗?我怎么找不到啊?
      

  10.   

    不是,程序出错误了,所以想看看sql语句是什么样的,看是否是数据过长或者是字段错误方面的错误,还想看看sql语句的格式,所以不是想查看结果,而是想看看这个sql语句有什么错误没有,请问,您说的其它途径,能否详细说一下呢?
      

  11.   

    如果你只想看到sql语句是什么模样,可以用他
      

  12.   

    查询分析器->工具->Sql Server Profiler->File->New Trace->连接到一个数据库之后-->Use the template选TSQL_Duration(选这个比较简洁,并可以看sql的执行时间和sql脚本.)-->再点Events Selection勾上TextData-->Run....
      

  13.   

    程序出错,你完全可以用try catch得到和sql查询分析中一样的错误信息,为什么一定要依赖sql的工具呢?
      

  14.   

    根本不需要嗅叹气,设个断点,给sqlCommand添加监视,在屏开项中就可以直接查看params的各项值了~
      

  15.   

    Vs2005自带了个SQL模块功能。你可以通过它来编写存储过程、调试(执行)存储过程。
    另外SQL2000自带的查询分析器也有调试功能。具体看起可以在解决方案那么查看。
    调试存储过程是要求你输入那些必须输入的参数才能调试的。如果你里面有用到Exec执行组合SQL语句。
    那么可以在一定场合中加入print @strWhere进行查看你的SQL执行语句。
      

  16.   

    在sql中写个存储过程,print看结果.
      

  17.   

    如果以上都无法解决你的问题,就用
    string str_sql = update aaa set id=id,name=name,sex=sex; 
    File.AppendAllText(File_Path, strSql);...........
      

  18.   

    楼主,请看看这个例子! 是否有帮助?if EXISTS (SELECT name FROM sysobjects
               WHERE name='PinviteMatchInfo'AND type='P')
      DROP PROCEDURE PinviteMatchInfo
    go
     
    create procedure PinviteMatchInfo
     @Jop varchar(30),
     @WorkMode tinyint,
     @JopMajor varchar(30),
     as DECLARE @SQL NVARCHAR(500)
     set @SQL='select ApplyJopID,InviteJopID from ApplyJopinfo AS a INNER JOIN IndiviInfo AS b ON (Jop= '+@Jop+' or Jop=不限) and '
     set @SQL=@SQL+'(a.WorkMode='+@WorkMode+'or a.WorkMode=0 )'
     set @SQL=@SQL+' and (a.JopMajor='+@JopMajor+' or a.JopMajor=不限 )'
    exec @SQL     
    print @SQL   exec PinviteMatchInfo '首席代表、总经理','1'
      

  19.   

    楼主,请看看这个例子! 是否有帮助? if EXISTS (SELECT name FROM sysobjects 
              WHERE name='PinviteMatchInfo'AND type='P') 
      DROP PROCEDURE PinviteMatchInfo 
    go create procedure PinviteMatchInfo 
    @Jop varchar(30), 
    @WorkMode tinyint, 
    @JopMajor varchar(30), 
    as DECLARE @SQL NVARCHAR(500) 
    set @SQL='select ApplyJopID,InviteJopID from ApplyJopinfo AS a INNER JOIN IndiviInfo AS b ON (Jop= '+@Jop+' or Jop=不限) and ' 
    set @SQL=@SQL+'(a.WorkMode='+@WorkMode+'or a.WorkMode=0 )' 
    set @SQL=@SQL+' and (a.JopMajor='+@JopMajor+' or a.JopMajor=不限 )' 
    exec @SQL    
    print @SQL  exec PinviteMatchInfo '首席代表、总经理','1'