Click here to Skip to main content
16,022,339 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hello all,

I am working on a console project. I created a class named 'worker' and wrote some properties such as 'name,lastname,age' with set&get methods.

Under the main I created 2 new workers. But I can not add them to the database. I am stuck and cant go furter. I would be really glad if you help me.

The code is;
Worker Andrew = new Worker();
           Andrew.Name = "Andrew";
           Andrew.HairColor = Color.Black;


Worker Steve = new Worker();
           Steve.Name = "Steve";
           Steve.HairColor = Color.Brown;

           //Connection string for the database
           MySqlConnection conn = new MySqlConnection("Server=localhost;Database=mydatabase;UID=root;PASSWORD=123456789;pooling=false");
           MySqlCommand cmd = conn.CreateCommand();

           cmd.Connection = conn;

           cmd.CommandText = "insert into workerdetails (Name, HairColor) values (@name1, @color1)";
           cmd.Parameters.AddWithValue("@name1", Andrew.Name);
           cmd.Parameters.AddWithValue("@color1", Andrew.HairColor);

           cmd.CommandText = "insert into workerdetails (Name, HairColor) values (@name2, @color2)";
           cmd.Parameters.AddWithValue("@name2", Steve.Name);
           cmd.Parameters.AddWithValue("@color2", Steve.MouseColor);


           conn.Open();

           //MySqlDataReader reader = cmd.ExecuteReader();
           //cmd.ExecuteReader();
           cmd.ExecuteNonQuery();
           conn.Close();
Posted
Updated 31-Jul-10 5:27am
v2

Would it work when placed in the main thread?

Doesn't Steve.MouseColor need some casting?

Good luck!
 
Share this answer
 
private void btnAdd_Click(object sender, EventArgs e)
{
string tbl = "students";
string sqlStr = string.Concat("SELECT * FROM ", tbl);

try
{
OleDbConnection cnn = new OleDbConnection(cnnStr);
OleDbDataAdapter oda = new OleDbDataAdapter(sqlStr, cnn);
OleDbCommandBuilder ocb = new OleDbCommandBuilder(oda);

cnn.Open();

// must appear after cnn.open
OleDbCommand cmd = new OleDbCommand(sqlStr, cnn);
OleDbDataReader drr = cmd.ExecuteReader();
///////

DataSet ds = new DataSet();
DataTable dt = new DataTable();
DataRow dr;

bool duplicate = false;

while (drr.Read())
{
if (drr["id"].ToString().Trim() == txtIDAdd.Text.Trim())
{
duplicate = true;
break;
}
}


if (!duplicate)
{
ocb.QuotePrefix = "[";
ocb.QuoteSuffix = "]";
oda.Fill(ds, tbl);

dt = ds.Tables[tbl];
dr = dt.NewRow();

/*dr[0] = txtIDAdd.Text.Trim();
dr[1] = txtNameAdd.Text.Trim();
dr[2] = txtMarkAdd.Text.Trim();*/
dr["id"] = txtIDAdd.Text.Trim();
dr["studentname"] = txtNameAdd.Text.Trim();
dr["mark"] = Convert.ToByte(txtMarkAdd.Text.Trim());
dt.Rows.Add(dr);

oda.InsertCommand = ocb.GetInsertCommand();

if (oda.Update(ds, tbl) == 1)
{
ds.AcceptChanges();
MessageBox.Show("Added");
}
else
{
ds.RejectChanges();
MessageBox.Show("Rejected");
}
}
else
MessageBox.Show("Already Exist");


drr.Close();
cnn.Close();

dt.Dispose();
ds.Dispose();
drr.Dispose();
cmd.Dispose();
ocb.Dispose();
oda.Dispose();
cnn.Dispose();

dt = null;
ds = null;
drr = null;
cmd = null;
ocb = null;
oda = null;
cnn = null;
}
catch (Exception ex)
{
MessageBox.Show("Error:\n\t" + ex.Message);
}
finally
{
}



its a way ..if u use in sql ,just change "OLedb"with "sql" try it
 
Share this answer
 
Thanks for the replies. I fixed it by adding two workers to a list and by using for loop I added them to the database. code goes by:

for (int i = 0; i < worker.Count; i++)
{
MySqlCommand cmd = new MySqlCommand("insert into workerdetails (Name, HairColor) values (@name, @color)", conn);

cmd.Parameters.AddWithValue("@name", worker[i].Name);
cmd.Parameters.AddWithValue("@color", worker[i].HairColor);

conn.Open();
cmd.ExecuteNonQuery();
cmd.Dispose();
conn.Close();
}
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900