检查SQL数据库中是否存在用户ID



我是一名初级程序员,正在编写一个C#应用程序,用于查询数据库。然而,我想知道如何检查ID是否存在(ID是用户在控制台应用程序中输入的),如果不存在,则显示一条消息。

这是我的代码:

Console.WriteLine("enter ID");
try
{
    var province_id = Convert.ToInt32(Console.ReadLine());
    var aquery2 = from test in context.BusinessEntityAddress
                  where test.Address.StateProvinceID == province_id
                  group test.BusinessEntity.Person.LastName by new { test.BusinessEntityID, test.BusinessEntity.Person.LastName, test.BusinessEntity.Person.FirstName } 
                        into balk
                  select new {
                               ...
                             };

没有粘贴整个代码,但这是我的问题所在。在线

where test.Address.StateProvinceID == userid

我想检查数据库中是否存在该ID,如果不存在,则显示一条消息。我不知道该怎么做。

注意,所有的代码都已经在try{}catch{}中了,因为我还需要确保用户输入是一个整数。

感谢

在您的问题中,您似乎要做更多的工作,而不仅仅是搜索用户ID?你似乎是在说StateProvinceId是用户Id?在这种情况下,像这样的简单测试就足够了:

if (!context.Addresses.Any(a => a.StateProvinceID == userid))
{
   Console.WriteLine("User doesn't exist");
}

不过,在用户表中查找似乎更合乎逻辑。EG,上下文。用户。因此,这会质疑你为什么要按(不应该需要的)分组。

您需要将每个数据对象添加到上下文中,但如果您能详细说明哪些数据对象不起作用,我们可以提供更多帮助。

您不需要在尝试中运行代码,而是首先必须检查用户的存在:

int number;
//check if the userId is an integer
if(!int.TryParse(userId, out number)){
    Console.WriteLine("Please enter a valid interger!!");
    return;
}  
var beAddress = context.BusinessEntityAddress;
//check for the userId exist in the DB
var flag = beAddress.Any(a => a.Address.StateProvinceID == number);
if(flag){
   //do something if the user exist
}
else{
   //do something else if the user doesn't exist
} 

为了检查字符串是否是有效的整数,您应该使用int.TryParse("8", NumberStyles.Integer, System.Globalization.NumberFormatInfo.InvariantInfo, out number);,这样您不仅要检查字符串是否为数字,还要检查它是否为整数。

对于典型的用户错误,比如数字解析,不应该使用try-catchint.TryParse()是为此而制作的:

// get rid of the try-catch, you wont need it anymore
int userid;
var input = Console.ReadLine();
if (!int.TryParse(input, out userID))
{
    Console.WriteLine("Invalid input : '{0}' is not a number", input);
    return;
}
var aquery2 = from test in context.BusinessEntityAddress
              where test.Address.StateProvinceID == userid
              group test.BusinessEntity.Person.LastName by new { test.BusinessEntityID, test.BusinessEntity.Person.LastName, test.BusinessEntity.Person.FirstName } into balk
              select new
              {
                  /* ... */
              };
if (!aquery2.Any())
{
    // not found... display a message
}
else
{
    // found... do stuffs
}

这是我正在使用的代码。我不了解控制台应用程序,但对C#和SQL知之甚少。我不确定我是否理解清楚,只是希望这能对你有所帮助。非常感谢。

bool idfound; (declare in the field of a Class)
private void buttonIDcheck_Click(object sender, RoutedEventArgs e)

(必须由Visual Studio创建的事件,而不是手动创建)

{
    SqlConnection Conn = new SqlConnection();
    Conn.ConnectionString = yourConnectionString;
    Conn.Open();
    SqlCommand check_idexistcomm = new SqlCommand();
    check_idexistcomm.Connection = Conn;
    check_idexistcomm.CommandText = "SELECT id FROM yourtable";
    var check_idexistda = new SqlDataAdapter(check_idexistcomm);
    SqlDataReader check_idexistreader = check_idexistcomm.ExecuteReader();
    while (check_idexistreader.Read())
    {
        if (check_idexistreader["id"].ToString()== text value inputed by user here)
        {   
          idfound = true;
          break;
        }
    }
    check_idexistreader.Close();
    Conn.Close();
    if (idfound=true)
    {
        your code here to accept the user as authorized
    }
    else
    {
        MessageBox.Show("Sorry, you're not authorized");
    }
}

相关内容

  • 没有找到相关文章