0

このチュートリアルに基づく: http://www.codeproject.com/Tips/423233/How-to-Connect-to-MySQL-Using-Csharp

私はテーブルを持っています

CREATE TABLE Employee {
ID int,
Name varchar(20),
Password varchar(20),
}

そして今、私は新しい行を持っています

INSERT INTO employee(ID, Name, Password) VALUES (001, 'John', 'abc')

そして、TextBoxから取得したIDからパスワードを文字列として受け取る方法は次のとおりです

MySqlConnection connection = new MySqlConnection("Server=localhost; Database=sad - final project; Uid=root; Pwd=");
        connection.Open();
        try
        {
            MySqlCommand command = connection.CreateCommand();
            command.CommandText = "SELECT Password FROM  employee WHERE ID = '" + Input_ID + "'";
            MySqlDataAdapter adapter = new MySqlDataAdapter(command);

            DataSet myDataSet = new DataSet();
            adapter.Fill(myDataSet);
        } catch blablabla

Input_ID が 001 の場合、myDataSet からパスワード (「abc」) を含む文字列を取得して、別のテキスト ボックスから入力されたパスワードと比較できると期待しています。この myDataSet を String に変換するにはどうすればよいですか?

4

3 に答える 3

1

ExecuteScalar代わりに使用するのはどうですか:

var pwd = command.ExecuteScalar() as string;

そして今、あなたはstring. この回答では、コードのセキュリティ上の懸念に対処するつもりはありません。それらは膨大です。

于 2013-06-05T15:44:55.710 に答える
0
DataRow row = myDataSet.Tables[0].Row[0];
string password = row["Password"];

文字列を取得する必要があります。

于 2013-06-05T15:50:53.867 に答える
0

ExecuteScalarパスワードを文字列に取得するために使用する必要があります。またusing、接続/コマンドを適切に破棄するために、キーワードを使用する必要があります。また、インジェクションを防ぐために、select でパラメーターを使用する必要があります。

    using (MySqlConnection connection = new MySqlConnection("Server=localhost; Database=sad - final project; Uid=root; Pwd=");
    using (MySqlCommand command = new MySqlCommand("SELECT password FROM employee WHERE ID = @UserId", connection)
    {
        try
        {
            connection.Open();
            command.Parameters.AddWithValue("@UserId", Input_ID); 

            var pwd = command.ExecuteScalar() as string;
            //Do something with the stored password.
            //Consider encryption and other security concerns when working with passwords.
        } 
        catch (Exception ex)
        {
            //handle your exceptions
        }
    }
于 2013-06-05T15:52:57.140 に答える