Reputation: 75
So I want to store multiple values to one parameter. Something like adding a row to a column. I've been trying this with the following: storeData.Parameter.AddWithValue()
This sadly doesn't work, because it says that subjects, which I'm using in the following code, is already difined. I'm not that experienced with MySQL yet so I don't really know another way to do this. Here is my code:
string conString = @"Data Source=MYIP; Port=3306; Initial Catalog=MYCATALOG; User ID=USERNAME; Password=PASS;Integrated Security=true;";
MySqlConnection SalesKicker;
SalesKicker = new MySqlConnection(conString);
try
{
SalesKicker.Open();
MySqlCommand tabCreator = new MySqlCommand("CREATE TABLE " + dt.bedrijfsNaam + " (subjects TEXT , jrLijks INT , kwrt INT , mnd INT , wek INT , dag INT)", SalesKicker);
tabCreator.ExecuteNonQuery();
MySqlCommand storeData = new MySqlCommand("INSERT INTO " + dt.bedrijfsNaam+ " (subjects, jrLijks, kwrt, mnd, wek, dag)" + "VALUES (@subjects, @jrLijks, @kwrt, @mnd, @wek, @dag)", SalesKicker);
string[] subjects = new string[] { "Prospects", "Hot Prospect", "Afspraken Maken", "Afspraken", "Offertes Maken", "Gescoorde Offertes", "Nieuwe Klanten" };
for (int i = 0; i < subjects.Length; i++) {
storeData.Parameters.AddWithValue("@subjects", subjects[i]);
if(i == 0)
{
storeData.Parameters.AddWithValue("@jrLijks", dt.skProspects * 12);
storeData.Parameters.AddWithValue("@kwrt", dt.skProspects * 3);
storeData.Parameters.AddWithValue("@mnd", dt.skProspects);
storeData.Parameters.AddWithValue("@wek", (dt.skProspects * 12) / 52);
storeData.Parameters.AddWithValue("@dag", (dt.skProspects * 12) / 365);
}
//these if statements are used for every subject
storeData.ExecuteNonQuery();
SalesKicker.Close();
}
The code stops after it adds "Prospects". What am I doing wrong here? Can someone help me with this?
this is the error I`m getting:
{"Parameter 'subjects' has already been defined."}
ow, and dt.bedrijfsNaam gets its value through the dt class
Thanks in advance
Upvotes: 0
Views: 674
Reputation: 2246
Check below code
string conString = @"Data Source=MYIP; Port=3306; Initial Catalog=MYCATALOG; User ID=USERNAME; Password=PASS;Integrated Security=true;";
MySqlConnection SalesKicker;
SalesKicker = new MySqlConnection(conString);
try
{
SalesKicker.Open();
MySqlCommand tabCreator = new MySqlCommand("CREATE TABLE " + dt.bedrijfsNaam + " (subjects TEXT , jrLijks INT , kwrt INT , mnd INT , wek INT , dag INT)", SalesKicker);
tabCreator.ExecuteNonQuery();
MySqlCommand storeData = new MySqlCommand("INSERT INTO " + dt.bedrijfsNaam+ " (subjects, jrLijks, kwrt, mnd, wek, dag)" + "VALUES (@subjects, @jrLijks, @kwrt, @mnd, @wek, @dag)", SalesKicker);
string[] subjects = new string[] { "Prospects", "Hot Prospect", "Afspraken Maken", "Afspraken", "Offertes Maken", "Gescoorde Offertes", "Nieuwe Klanten" };
storeData.Parameters.Add("@subjects");
storeData.Parameters.AddWithValue("@jrLijks", dt.skProspects * 12);
storeData.Parameters.AddWithValue("@kwrt", dt.skProspects * 3);
storeData.Parameters.AddWithValue("@mnd", dt.skProspects);
storeData.Parameters.AddWithValue("@wek", (dt.skProspects * 12) / 52);
storeData.Parameters.AddWithValue("@dag", (dt.skProspects * 12) / 365);
for (int i = 0; i < subjects.Length; i++) {
storeData.Parameters["@subjects"].Value=subjects[i];
//these if statements are used for every subject
storeData.ExecuteNonQuery();
}
SalesKicker.Close();
Upvotes: 1
Reputation: 383
If you want to reuse parameters, you should call
command.Parameters.Clear();
before executing the command.
In your case it would be good to add this line right after the opening brackets of your for loop.
Upvotes: 3