如何检查mysql表是否为空?

时间:2012-05-27 17:13:47

标签: c# mysql sql database

如何从C#检查我的表是否为空?

我有类似的东西:

public MySqlConnection con;
public MySqlCommand cmd;

 con = new MySqlConnection(GetConnectionString());
 con.Open();
 cmd = new MySqlCommand("SELECT * FROM data;", con);

或者我不需要调用SELECT语句?

4 个答案:

答案 0 :(得分:5)

您可以使用COUNT(*)但没有WHERE关闭,并查看结果中确实存在多少行。

或者您可以执行SELECT (id) FROM tablename没有WHERE子句,如果没有返回任何行,则该表为空。

答案 1 :(得分:5)

我将以C#祝你好运

public bool checkEmptyTable(){
        try
        {
            MySql.Data.MySqlClient.MySqlCommand com = new MySql.Data.MySqlClient.MySqlCommand();
            conn = new MySql.Data.MySqlClient.MySqlConnection("YOUR CONNECTION");
            com.Connection = conn;
            com.CommandText = "SELECT COUNT(*) from data";

            int result = int.Parse(com.ExecuteScalar().ToString());

            return result == 0; // if result equals zero, then the table is empty
        }
        finally
        {
            conn.Close();
        }
   }

答案 2 :(得分:0)

SELECT COUNT(*)FROM table WHERE col_name IS NOT NULL

答案 3 :(得分:0)

如果“数据”可能是一个大表,那么您最好这样做(其中pkdata是您的主键字段)

public function filter_rooms(string $R_floor, array $complement = null, string $price, bool $and = true)
{
    $em = $this->getEntityManager();
    $sql = "SELECT h FROM App\Entity\Room h INNER JOIN h.complementoIdcomplemento co WHERE h.R_floor = :R_floor AND h.price <= :price";
    if ($complement) {
        $sql .= " and (";
        foreach ($complement as $namecomplement) {
            $sql .= "co.name='" . $namecomplement . "' or ";
        }
        $sql .= " false=false )";
    }
    $qb = $em->createQuery($sql);
    $qb->setParameters(['R_floor' => $R_floor, 'price' => $price,]);
    $datos = $qb->execute();
    return $datos;
} 

无论您在“数据”中有0行还是数百万行,此操作都将很快运行。在不使用WHERE或ORDER BY的情况下使用SELECT意味着它只会拉出第一行,而LIMIT 1会使它超过1。 如果您有一个程序在六个月前运行得非常快,但现在却像一只狗一样运行,也许会寻找一些东西!