我正在尝试搜索托管在免费SQL主机站点(www.000webhost.com)上的表(以编程方式,在C#中)来搜索表中的用户名,并将其与用户名旁边存储的“password”字符串进行比较。由于我以前从未处理过C#SQL连接,所以我不知道如何做到这一点。
{
SqlConnection myConnection = new SqlConnection("user id=XXXXXXXXXXXXXXX;" + "password=XXXXXXXXXXXXXX;server=databases-auth.000webhost.com;" +
"Trusted_Connection=yes;" + "database=XXXXXXXXXXXXXXXX; " + "connection timeout=30");
}
“用户名”将由用户输入TextBox1,而“密码”将在TextBox2中输入。任何有关代码的帮助或我能够使用的示例/网站的链接将不胜感激。提前谢谢!
答案 0 :(得分:1)
我建议的第一件事就是不要以原始格式发送密码。至少尝试哈希它们并以散列形式保存它们。如果要使用密码进行查询,只需发送散列字符串。
对于散列,您可以使用“单向”加密格式,例如MD5或SHA-256。您可以在System.Security.Cryptography中找到它们。
然后,永远不要连接字符串来构造查询。而是使用参数化命令,这样您将具有一定程度的安全性。看一下关于参数化命令的这个link
最后,如果需要返回多于1列,请使用DataReader。如果只需要返回1列,请使用ExecuteScalar函数,该函数返回单个值。在this link中,您将找到有关如何使用ExecuteScalar的信息。
答案 1 :(得分:-3)
public String auth(String u, String p)
{
string recuperatedData = "";
//Create Connection
SqlConnection conn = new SqlConnection(@"Data Source=DRACARYS\SQLEXPRESS;Initial Catalog=test;Integrated Security=SSPI");
//SQL Command
SqlCommand cmd = new SqlCommand("SELECT password FROM dbo.databasename WHERE username = '" + u +"'" , conn);
//Open connection
conn.Open();
//To read from SQL Server
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
recuperatedData = dr["password"].ToString();
}
//Close Connections
dr.Close();
if (recuperatedData == p)
{
//return flag value to shos you've logged in to a different function with post log in functionalities
}
}