Select语句不适用于C#

时间:2017-09-03 00:50:23

标签: c# sql-server

我正在尝试使用以下代码从本地数据库获取数据:

SqlConnection conn = new SqlConnection(@"Data Source = .\SQLEXPRESS; Initial Catalog = serin; Integrated Security = True");
conn.Open();

string query = "SELECT UserPassword FROM UserList WHERE UserName = @UserName";

SqlCommand cmd = new SqlCommand(query, conn);
//SqlParameter param = new SqlParameter("@UserName", SqlDbType.VarChar, txt_UserName.TextLength);
//param.Value = txt_UserName.Text;

//cmd.Parameters.Add(param);
cmd.Parameters.AddWithValue("@UserName", "aliserin");

当我尝试这种方式时,它有效。但是当我尝试从文本框中获取输入时,它返回NULL。我尝试过注释,但它们也没有用。我想也许是关于类型的,但它看起来并不是这样。

任何帮助将不胜感激。

我正在使用Visual Studio 2017和SQL Server 2017。

2 个答案:

答案 0 :(得分:3)

更改此行

cmd.Parameters.AddWithValue("@UserName", "aliserin");

到这个

cmd.Parameters.AddWithValue("@UserName", txt_UserName.Text);

注意: Can we stop using AddWithValue() already?感谢@marc_s

答案 1 :(得分:1)

不要使用与列名相同的参数名称...我以前认为这是一个混乱,因为它将列视为相同并使用列,而不是参数。尝试

string query = "SELECT UserPassword FROM UserList WHERE UserName = @parmUserName";
SqlCommand cmd = new SqlCommand(query, conn);
cmd.Parameters.AddWithValue("@parmUserName", txt_UserName.Text );