我想将加密密码的值转换为字符串变量。但是我得到了整个查询。
这是我的代码: -
string strpassword = "select sys.get_enc_val ('" + txtpassword.Text + "', 'F20FA982B4C2C675') from dual";
Response.Write(strpassword);
在strpassword
我得到了整个查询。
但在Toad
中,结果为
F52377D5FFB1A47F
如何在oracle中获得它?
答案 0 :(得分:3)
写作时
string strpassword = "select sys.get_enc_val ('" + txtpassword.Text + "', 'F20FA982B4C2C675') from dual";
Response.Write(strpassword);
然后您只是显示字符串值,因为您没有执行字符串中存在的SQL。
您要查找的是字符串中存在的SQL的结果。要获取存储在字符串中的SQL的结果,您需要执行它。
您可以尝试这样:
string queryString = "select sys.get_enc_val ('" + txtpassword.Text + "', 'F20FA982B4C2C675') from dual";
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(queryString, connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
try
{
while (reader.Read())
{
Console.WriteLine(String.Format("{0}",reader[0]));
}
}
finally
{
reader.Close();
}
}
如上所述,您的查询很容易SQL Injection。更好的方法是使用paramterized query来摆脱它。像
这样的东西string sql = "select sys.get_enc_val (@myvar) from dual";
SqlConnection connection = new SqlConnection(/* connection info */);
SqlCommand command = new SqlCommand(sql, connection);
command.Parameters.AddWithValue("myvar", txtpassword.Text);