sql命令参数不生效
Parameter does not take effect for sql command
我正在尝试为我的项目使用参数,但不知为何它没有 return 输出。请在下面查看我的代码。
SqlCommand zSqlComm = new SqlCommand("SELECT * FROM tblAppUsers WHERE Username = @Username AND PasswordHash = HASHBYTES('SHA2_512', @Password)");
zSqlComm.CommandType = CommandType.Text;
zSqlComm.Parameters.AddWithValue("@Username", "admin");
zSqlComm.Parameters.AddWithValue("@Password", "admin");
return DatabaseDAL.ExecuteSelect(zSqlComm);
但是,如果我尝试使用它,它 return 是数据集中的一个值:
SqlCommand zSqlComm = new SqlCommand(
"SELECT * FROM tblAppUsers WHERE Username = 'admin' AND PasswordHash = HASHBYTES('SHA2_512', 'admin')"
);
请看我的ExecuteSelect
代码:
public static DataTable ExecuteSelect (SqlCommand zSQLComm)
{
DataTable zDataTable = new DataTable();
SqlConnection zSQLConn = new SqlConnection(DatabaseConfiguration.ZSQLConnectionString);
zSQLComm.Connection = zSQLConn;
SqlDataAdapter zSQLDataAdapter = new SqlDataAdapter(zSQLComm);
try
{
zSQLConn.Open();
zSQLDataAdapter.Fill(zDataTable);
zSQLConn.Close();
}
catch
{
zSQLConn.Close();
}
return zDataTable;
}
我也尝试删除 CommandText
中参数中的单引号,但它仍然没有 return 任何输出。
你可以通过MS SQL服务器查看,直接传递字符串和传递变量给HASHBYTES函数的结果是不同的:
declare @Password nvarchar(50)
set @Password = 'admin'
select HASHBYTES('SHA2_512', 'admin')
select HASHBYTES('SHA2_512', @Password)
所以尝试传递带有类型的参数:
zSqlComm.Parameters.Add("@Password", SqlDbType.NVarChar, 100).Value = "admin";
我正在尝试为我的项目使用参数,但不知为何它没有 return 输出。请在下面查看我的代码。
SqlCommand zSqlComm = new SqlCommand("SELECT * FROM tblAppUsers WHERE Username = @Username AND PasswordHash = HASHBYTES('SHA2_512', @Password)");
zSqlComm.CommandType = CommandType.Text;
zSqlComm.Parameters.AddWithValue("@Username", "admin");
zSqlComm.Parameters.AddWithValue("@Password", "admin");
return DatabaseDAL.ExecuteSelect(zSqlComm);
但是,如果我尝试使用它,它 return 是数据集中的一个值:
SqlCommand zSqlComm = new SqlCommand(
"SELECT * FROM tblAppUsers WHERE Username = 'admin' AND PasswordHash = HASHBYTES('SHA2_512', 'admin')"
);
请看我的ExecuteSelect
代码:
public static DataTable ExecuteSelect (SqlCommand zSQLComm)
{
DataTable zDataTable = new DataTable();
SqlConnection zSQLConn = new SqlConnection(DatabaseConfiguration.ZSQLConnectionString);
zSQLComm.Connection = zSQLConn;
SqlDataAdapter zSQLDataAdapter = new SqlDataAdapter(zSQLComm);
try
{
zSQLConn.Open();
zSQLDataAdapter.Fill(zDataTable);
zSQLConn.Close();
}
catch
{
zSQLConn.Close();
}
return zDataTable;
}
我也尝试删除 CommandText
中参数中的单引号,但它仍然没有 return 任何输出。
你可以通过MS SQL服务器查看,直接传递字符串和传递变量给HASHBYTES函数的结果是不同的:
declare @Password nvarchar(50)
set @Password = 'admin'
select HASHBYTES('SHA2_512', 'admin')
select HASHBYTES('SHA2_512', @Password)
所以尝试传递带有类型的参数:
zSqlComm.Parameters.Add("@Password", SqlDbType.NVarChar, 100).Value = "admin";