public DataTable taskcode_analyst(string strtfs,string  taskid )
        {
            string sql0 = " if exists ( select 1 from dbo.task01 where taskid = " + tb_taskid.Text.Trim() + " ) select 1  ";
            int i = Convert.ToInt32 (DBHelper.executeSql(DBHelper.db_connect, sql0 ) );
            
            if (i==1)
                tb_taskstatus.Text = "已录入";
            else
                tb_taskstatus.Text = "未录入";
                            string sql1 = " exec dbo.pr_taskcode_analyst @tfspath ";
            SqlParameter[] parms = new SqlParameter[1];
            parms[0] = new SqlParameter("@tfspath", SqlDbType.VarChar);
            parms[0].Value = strtfs;            DBHelper.executeSql(DBHelper.db_connect, sql1, parms[0]);
            return
              DBHelper.getDataSet(DBHelper.db_connect, sql1, parms[0]).Tables[0];
        }为什么总是会走到else,SQL执行完成后,应该返回值是1呀,我怎么接收呀?C#入门级问题,谢谢大家。阿弥陀佛保佑你

解决方案 »

  1.   

    你确认返回数量是1 吗,如果你表中有100条,那么select 1 返回多少,自己试试
      

  2.   

    string sql0 = "select count(1) from dbo.task01 where taskid = " + tb_taskid.Text.Trim() + ")";
                
      

  3.   

    select 1 from dbo.task01 where taskid = " + tb_taskid.Text.Trim() + " 直接这样查询,然后判断行数不行吗
      

  4.   

    你那SQL语句是返回一个DataTable,而不是返回一个1的值而且你用的DBHelper里的方法也不对,executeSql估计是执行一个sql语句,没有返回值的,你找找DBHelper的其他方法,看有没有返回DataSet、DataTable、int或object的方法
      

  5.   

    下面是要提交的句 
    IF EXISTS ( SELECT 1 FROM dbo.task01 WHERE taskid = 1234 ) 
    SELECT 1 
    如果,返回的结果是1,接收后,去处理1
    其他则没有返回值,去处理2
      

  6.   

      SqlConnection conn;
                SqlCommand comm;
                SqlDataReader MyDataReader;
                Int32 i;            i = 0 ;
                conn = new SqlConnection(StringConn) ;
                comm = new SqlCommand();
                comm.Connection = conn;
                comm.CommandText = "if exists ( select 1 from dbo.task01 where taskid = 1234 ) select 1 1  ";
                conn.Open();
                MyDataReader = comm.ExecuteReader();    
                while (MyDataReader.Read()  )
            {
               i =  MyDataReader.GetInt32(0);
                }            if (i==1)
                   label1.Text = "已录入";
                else
                    label1.Text = "未录入";