C# - Can't insert data into MySQL database -


i making application scrape website. website has bunch of players, , scrape each 1 of profile pages. profile pages contains information name, level, world , last login date.

so made object called player. , add data list.

public static list<player> players = new list<player> { };  public class player     {         public string name { get; set; }         public string sex { get; set; }         public string vocation { get; set; }         public int level { get; set; }         public int achievements { get; set; }         public string world { get; set; }         public string lastlogin { get; set; }         public string accountstatus { get; set; }         public int onlinestatus { get; set; }     } 

i add data this:

new player { name = playername, sex = playersex, vocation = playervocation, level = playerlevel, achievements = playerachievements, world = playerworld, lastlogin = playerlastlogin, accountstatus = playeraccountstatus, onlinestatus = playeronlinestatus }; 

i want add players mysql database, cannot seem understand how insert data.

i established connection , tried select data , works fine. connection not bad. inserting seems not work.

here's code add insert data tables:

string connstring = "server=localhost;port=3306;database=rookstat;uid=xxxxxxx;password=xxxxxx;"; mysqlconnection conn = new mysqlconnection(connstring); mysqlcommand command = conn.createcommand();  foreach (player rooker in players) { command.commandtext = "insert rookstayers (id, name, sex, vocation, level, achievements, world, lastlogin, accountstatus, onlinestatus) values('', rooker.name, rooker.sex, rooker.vocation, rooker.level, rooker.achievements, rooker.world, rooker.lastlogin, rooker.accountstatus, rooker.onlinestatus)"; conn.open(); command.executenonquery(); }  conn.close(); 

what doing wrong? unsure values insert. supposed rooker.name or what?

try following:

using(var connection = new mysqlconnection(connectionstring))  {     connection.open();     using(var command = new mysqlcommand())      {         command.connection = connection;         command.commandtext = @"insert rookstayers (name, sex, vocation, level, achievements, world, lastlogin, accountstatus, onlinestatus) values (@name, @sex, @vocation, @level, @achievements, @world, @lastlogin, @accountstatus, @onlinestatus)";         command.prepare();          foreach(var rooker in players)          {             command.parameters.clear();             command.parameters.addwithvalue("@name", rooker.name);             command.parameters.addwithvalue("@sex", rooker.sex);             command.parameters.addwithvalue("@vocation", rooker.vocation);             command.parameters.addwithvalue("@level", rooker.level);             command.parameters.addwithvalue("@achievements", rooker.achievements);             command.parameters.addwithvalue("@world", rooker.world);             command.parameters.addwithvalue("@lastlogin", rooker.lastlogin);             command.parameters.addwithvalue("@accountstatus", rooker.accountstatus);             command.parameters.addwithvalue("@onlinestatus", rooker.onlinestatus);             command.executenonquery();         }     } } 

note differences:

  1. wrapping disposable objects (i.e. mysqlconnection , mysqlcommand) in using statements.
  2. updated sql insert command use sql parameters. in case, "@name" replaced value of rooker.name when command executed.
  3. excluded id column in insert statement assume identity column don't have explicitly include that.
  4. lastly, use of command.prepare(). specified in mysql .net connector documentation here, can can provide significant performance improvements on queries executed more once.

Comments

Popular posts from this blog

android - MPAndroidChart - How to add Annotations or images to the chart -

javascript - Add class to another page attribute using URL id - Jquery -

firefox - Where is 'webgl.osmesalib' parameter? -