- Home /
Unity3d C# select statement for GUI.TextArea
Good day to all, i have a problem, i have made a login with mysql remote connection. when im trying to login i cant login. i dont know how to use the GUI.TextArea exactly. here is my code:
void OnGUI()
{
GUI.Box(new Rect(Screen.width/2-60,Screen.height/2-105,120,210),"Score");
firstName = GUI.TextArea(new Rect(Screen.width/2-45,Screen.height/2-80,90,20),firstName);
Password = GUI.TextArea(new Rect(Screen.width/2-45,Screen.height/2-50,90,20),Password);
if(GUI.Button(new Rect(Screen.width/2-45,Screen.height/2-20,90,20),"Continue"))
{
SelectDatabase(firstName,Password);
}
if(GUI.Button(new Rect(Screen.width/2-50,Screen.height/2+70,100,20),"Back to Menu"))
{
Application.LoadLevel("mainMenu");
}
}
public void SelectDatabase(string username, string password)
{
connectionstring = @"Server=db4free.net; Port=3306; Database=gladia***; Uid=der****; Password=*********;";
conn = new MySqlConnection(connectionstring);
da = new MySqlDataAdapter();
ds = new DataSet();
try
{
da.SelectCommand = conn.CreateCommand();
da.SelectCommand.CommandText = "select * from users where username=@username and password=@password";
da.SelectCommand.CommandType = CommandType.Text;
da.SelectCommand.Parameters.Add("@username",MySqlDbType.Text,15,"username").Value = username;
da.SelectCommand.Parameters.Add("@password",MySqlDbType.Text,15,"password").Value = password;
da.Fill(ds,"users");
if (ds.Tables["users"].Rows.Count == 1)
{
Debug.Log("pasok!");
}
else
{
Debug.Log("Wrong username and Password");
}
}
catch (System.Exception ex)
{
Debug.Log(ex.Message);
}
}
if i change the @username to a correct username and @password to correct password im successfully login. what may be the possible reason why Debug.Log("Wrong username and Password"); always prompting? i think the problem is in firstName and Password variables but i dont know how to fix it. thank you in advance.
Answer by Bunny83 · Mar 18, 2012 at 11:52 AM
I never used the Parameters collection. Usually i just build the sql command "manually" like this:
da.SelectCommand.CommandText = "select * from users where username='" + username + "' and password='" + password + "'";
Beside that, keep in mind that a TextArea allows newline characters. You might want to use a TextField instead.
That might fix your problem, but your database setup is not very safe!!!
The C# code of your game can easily be viewed with a C# reflector, even from a web build. Never open a direct database connection from a user's PC. You usually use a server side script (like a PHP script) on a webserver to handle database interactions.
Thank you for that code. but still im searching for a way to use the parameter collection.
Well if you need / want to use it, you might better use the 3 parameter version ins$$anonymous$$d of the 4 parameter version. I'm not quite sure to what "source column" is referring to, but since it's just a parameter replacement in your query there is no source column. You feed the data external. I guess you might need a source column for subqueries or something like that.
Also do you need the type $$anonymous$$ySqlDbType.Text? Usually you would use $$anonymous$$ySqlDbType.NVarChar.
SqlDbType wont work, that's why im using $$anonymous$$ySqlDbType. still not working. i found the problem but i dont know how to fix it. the problem is not the textarea(i already changed it to textfield) but the
da.SelectCommand.Parameters.Add("@username",$$anonymous$$ySqlDbType.Text,15,"username").Value = username; da.SelectCommand.Parameters.Add("@password",$$anonymous$$ySqlDbType.Text,15,"password").Value = password;
i dont know why this is wrong but this is my way of coding even when im creating a simple software the involves local and remote database
i found the solution, ins$$anonymous$$d of using @ i replaced ?
Your answer
Follow this Question
Related Questions
Problem in starting mysqld Process 0 Answers
MySql Online Character About 0 Answers
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
Trigger player movement on touch 1 Answer