我正在尝试使用以下代码从本地数据库获取数据:
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。
答案 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 );