Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C-将字符串传递给DataTable以选择特定的DataRow_C#_Ado.net_Visual Studio 2017 - Fatal编程技术网

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+'。