C# C-将字符串传递给DataTable以选择特定的DataRow
我做了很多尝试,试图找出如何使它工作,但仍然没有线索。在将日志传递到表达式中之后,它告诉我并没有用户,但在数据库中,指定的用户存在。我不知道还有什么好做的,也许表达上的比较是错误的?如果有任何帮助,我将不胜感激C# C-将字符串传递给DataTable以选择特定的DataRow,c#,ado.net,visual-studio-2017,C#,Ado.net,Visual Studio 2017,我做了很多尝试,试图找出如何使它工作,但仍然没有线索。在将日志传递到表达式中之后,它告诉我并没有用户,但在数据库中,指定的用户存在。我不知道还有什么好做的,也许表达上的比较是错误的?如果有任何帮助,我将不胜感激 string log = txtLog.Text; string pass = txtPass.Text; else if (!(String.IsNullOrEmpty(log)) && !(String.IsNullOrEmpty(pass)))
string log = txtLog.Text;
string pass = txtPass.Text;
else if (!(String.IsNullOrEmpty(log)) && !(String.IsNullOrEmpty(pass)))
{
string exp = "login = 'log'";
DataRow[] rows = tab.Select(exp);
if (rows.Count() < 1)
{
MessageBox.Show("No users!", "Error", MessageBoxButtons.OK);
}
else
{
DataRow row = rows[0];
Console.WriteLine("log: {0}, pass: {1}", row[0].ToString(), row[1].ToString());
}
您希望使用变量log的值,而不是文字日志,这是您在这里要做的:
string exp = "login = 'log'";
改为使用字符串。格式:
string exp = String.Format("login = '{0}'", log);
或者使用C 6及以上版本中提供的
string exp = $"login = '{log}'";
由于这将使exp值如下所示,如果日志包含用户名:
登录名='username'
请记住,如果用户在您的文本框txtLog中输入“选择”,则选择将失败。您可能希望转义这些特殊字符:如果我明白您的意图,我相信您需要将赋值从string exp=login='log'更改为string exp=login='+log+'。