public bool search(string sql)
        {
            conn.Open();
            cmd = new SqlCommand(sql, conn);
            if (cmd.ExecuteNonQuery() == 1)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
str = "select * from employees where EID='" + textBox2.Text.Trim() + "' ";
if(search(str))
                {
                    
                    MessageBox.Show("员工号已存在,请重新录入");
                    conn.Close();
                }
在这个If语句中调用上面的search()方法,为什么在员工号已经存在的情况下也没有返回结果呢?求指教啊!

解决方案 »

  1.   

    select 不是 ExecuteNonQuery
      

  2.   

    private static void CreateCommand(string queryString,
        string connectionString)
    {
        using (SqlConnection connection = new SqlConnection(
                   connectionString))
        {
            connection.Open();        SqlCommand command = new SqlCommand(queryString, connection);
            SqlDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
                Console.WriteLine(String.Format("{0}", reader[0]));
            }
        }
    }
    用这样的
      

  3.   

    没有trycatch,估计程序已经有异常了,而你没catch到。
    把SQL贴到数据库里跑一下,看看到底有没有结果。
      

  4.   

    单步调试了,对于存在的员工号返回的是false
      

  5.   

    public bool search(string sql)
            {
                conn.Open();
                cmd = new SqlCommand(sql, conn);
    SqlDataReader reader = cmd.ExecuteReader();
            if(reader.Read())
            {
                return true;
            }
                else
                {
                    return false;
                }
            }
      

  6.   

    str = "select Count(*)... 
      

  7.   

    对于insert,update,delete操作使用ExecuteNonQuery,查询使用ExecuteQuery。
    并且,如果之判断是否存在,使用select count(*)  就可以了