如何在SQL服务器上进行“用户名和密码”类型搜索?

时间:2017-08-31 19:47:29

标签: c# mysql sql-server

我正在尝试搜索托管在免费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中输入。任何有关代码的帮助或我能够使用的示例/网站的链接将不胜感激。提前谢谢!

2 个答案:

答案 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
        } 
}