如何从C#检查我的表是否为空?
我有类似的东西:
public MySqlConnection con;
public MySqlCommand cmd;
con = new MySqlConnection(GetConnectionString());
con.Open();
cmd = new MySqlCommand("SELECT * FROM data;", con);
或者我不需要调用SELECT语句?
答案 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。 如果您有一个程序在六个月前运行得非常快,但现在却像一只狗一样运行,也许会寻找一些东西!