使用c#检查sql数据库中的字段

本文关键字:字段 数据库 sql 检查 使用 | 更新日期: 2023-09-27 18:29:11

我想检查用户是否在我的数据库中(使用id进行检查)。我正在使用以下代码。它正在发挥作用。我只想知道,这是正确的方法吗?或者有没有其他方法可以做得更好(比如使用COUNT(*)或任何其他查询)。我正在MVC4 中做我的项目

  public bool CheckUser(int mem_id)
    {
        bool flag = false;
        using (SqlConnection con = new SqlConnection(Config.ConnectionString))
        {
            using (SqlCommand cmd = new SqlCommand("SELECT Id FROM Mem_Basic WHERE Id="+ mem_id +"", con))
            {
                con.Open();
                SqlDataReader reader = cmd.ExecuteReader();
                if (reader.Read())
                {
                    flag = true;
                }
            }
        }
        return flag;
    }

使用c#检查sql数据库中的字段

如果想要一个值,可以使用ExecuteSclar函数。以及使用参数化查询来避免sql注入。

using (SqlConnection con = new SqlConnection(Config.ConnectionString))
            {
                using (SqlCommand cmd = new SqlCommand("SELECT 1 FROM Mem_Basic WHERE Id=@id", con))
                {
                    cmd.Parameters.AddWithValue("@ID", yourIDValue);
                    con.Open();
                    var found=(int)cmd.ExecuteScalar(); //1 means found
                }
            }

是的,如果使用SELECT COUNT(*)查询并将返回的单个值分配给int,而不是使用读取器语法,那么代码会更简单。

试试这个:

public bool CheckUser(int mem_id)
{
    bool flag = false;
    using (SqlConnection con = new SqlConnection(Config.ConnectionString))
    {
        using (SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM Mem_Basic WHERE Id="+ mem_id +""", con))
        {
            con.Open();
            int count = (int) cmd.ExecuteScalar();
            if(count > 0)
            {
                flag = true;
            }
        }
    }
    return flag;
}

您可以使用ExecuteScalar,而不用使用ExecuteReader。在我看来,你的代码会更干净。查看MSDN 上的更多信息

关于您的sql查询:您可以在Managment Studio中的sql查询分析器中检查性能。请参阅更多信息SQL Server Management Studio 2008 R2中的查询分析器在哪里。但在99%的情况下,它是最优的。

您也可以执行类似的操作,但只需检查null。

public bool CheckUser(int mem_id)
{
    bool flag = false;
    using (SqlConnection con = new SqlConnection(Config.ConnectionString))
    {
        using (SqlCommand cmd = new SqlCommand("SELECT Id FROM Mem_Basic WHERE Id="+ mem_id +"", con))
        {
            con.Open();
            if (cmd.ExecuteScalar() != null)
            {
                flag = true;
            }
         }
      }
 }