kunu sm
kunu sm

Reputation: 1

Inserting multiple values in a table?

The following code is working fine to insert new values in one row of tables. But when I try to insert multiple values then in the output those values get saved twice in the table.

Please help me for the code that will work to insert multiple values in my tables.

private void Form1_Load(object sender, EventArgs e)
 {
 String strConnection = "Data Source=HP\\SQLEXPRESS;database=MK;Integrated Security=true";

 SqlConnection con = new SqlConnection(strConnection);
 try
 {

 con.Open();

 SqlCommand sqlCmd = new SqlCommand();

 sqlCmd.Connection = con;
 sqlCmd.CommandType = CommandType.Text;
 sqlCmd.CommandText = "Select table_name from information_schema.tables";

 SqlDataAdapter sqlDataAdap = new SqlDataAdapter(sqlCmd);

 DataTable dtRecord = new DataTable();
 sqlDataAdap.Fill(dtRecord);
 comboBox1.DataSource = dtRecord;
 comboBox1.DisplayMember = "TABLE_NAME";
 comboBox1.ValueMember = "TABLE_NAME";

 con.Close();
 }
 catch (Exception ex)
 {
 MessageBox.Show(ex.Message);
 }
 }
 private void dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e)
 {
 var collection = this.dataGridView1.Rows;
 string output = "";
 foreach (DataGridViewRow row in collection)
 {
 foreach (DataGridViewCell cell in row.Cells)
 {
 if (cell.Value != null)
 {
 output += cell.Value.ToString() + " ";
 this.Text = output;
 }
 }
 }
 }
 private void PopulateGridView(string tablename)

 {

 if (tablename == "System.Data.DataRowView")
 return;
 String strConnection = "Data Source=HP\\SQLEXPRESS;database=MK;Integrated Security=true";

 SqlConnection con = new SqlConnection(strConnection);
 try
 {

 con.Open();

 SqlCommand sqlCmd = new SqlCommand();

 sqlCmd.Connection = con;
 sqlCmd.CommandType = CommandType.Text;
 sqlCmd.CommandText = "Select * from " + tablename;

 SqlDataAdapter sqlDataAdap = new SqlDataAdapter(sqlCmd);

 DataTable dtRecord = new DataTable();
 sqlDataAdap.Fill(dtRecord);
 dataGridView1.DataSource = dtRecord;

 con.Close();
 }
 catch (Exception ex)
 {
 MessageBox.Show(ex.Message);
 }
 }

 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
 {

 if (comboBox1.SelectedValue != null)
 {
 PopulateGridView(comboBox1.SelectedValue.ToString());
 }
 }
 private void InsertInfo()
 {
 string connectionString = null;
 SqlConnection connection;
 SqlDataAdapter adapter = new SqlDataAdapter();

 connectionString = @"Data Source=HP\SQLEXPRESS;database=MK;Integrated Security=true";
 connection = new SqlConnection(connectionString);

        foreach (int rowIndex in lstNewRows)
        {


            string insrtQry = "insert into " + comboBox1.Text + " values(";

            foreach (DataGridViewCell cell in dataGridView1.Rows[rowIndex].Cells)
            {
                insrtQry += "'" + cell.Value.ToString() + "',";
            }

            insrtQry = insrtQry.TrimEnd(",".ToCharArray());

            insrtQry += ")";


 try
 {
 connection.Open();
 adapter.InsertCommand = new SqlCommand(insrtQry, connection);
 adapter.InsertCommand.ExecuteNonQuery();



 MessageBox.Show("Row inserted !! ");
 connection.Close();
 }
 catch (Exception ex)
 {
 MessageBox.Show(ex.ToString());
 }
 }
 }





 private void insert_Click(object sender, EventArgs e)
 {
 InsertInfo();
 }

 private void dataGridView1_DefaultValuesNeeded(object sender, DataGridViewRowEventArgs e)
 {
 lstNewRows.Add(e.Row.Index);
 }


 }
 }

Upvotes: 0

Views: 1492

Answers (2)

Steve Byrne
Steve Byrne

Reputation: 1360

try changing:

string insrtQry = "insert into " + comboBox1.Text + " values(";

To:

string insrtQry = "INSERT INTO table_name (field1, field2, field3) VALUES (@value1, @Value2, @value3)"

Also checkout SQL insert statements at MSDN.Microsoft.com by following the link HERE.

Good luck with your code!

UPDATE:

Okay i'm beginning to understand what your doing. You could try making the comboBox into a variable so something like:

if (comboBox1.Text  == "table1")
{
string insrtQry = "INSERT INTO table_name (field1, field2, field3) VALUES 
(@value1, @Value2, @value3)" 
} 
else
{ 

 string insrtQry = "INSERT INTO table_name2 (field1-2, field2-3, field3-4) VALUES 
 (values1, values2, values3)" 
}

Upvotes: 1

Kamran Shahid
Kamran Shahid

Reputation: 4124

I would preferred Table value type and pass it to stored procedure [or inline query although i do not preferred it] Check this link for detail

http://www.christian-etter.de/?tag=sqldbtype-structured

Upvotes: 0

Related Questions