使用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;
}
如果想要一个值,可以使用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;
}
}
}
}