[英]to insert new values in sql db..by selecting different tables from combo box
well I have made this program to insert new values in SQL db,by choosing between different tables from combo box.I need to change the sql query by which I can use insert command individually for each table in combo box...the area where i need help is in bold ... 好吧,我已经让这个程序在SQL db中插入新的值,通过在组合框中的不同表之间进行选择。我需要更改sql查询,通过该查询,我可以单独为组合框中的每个表使用insert命令...我需要帮助是大胆的...
namespace combo
{
public partial class Form1 : Form
{
List lstNewRows = new List();
public Form1()
{
InitializeComponent();
}
private void PopulateComboBox()
{
try
{
List _items = new List();
_items.Add("select * from lol");
_items.Add("select * from datejoin");
comboBox1.DataSource = _items;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void Form1_Load(object sender, EventArgs e)
{
PopulateComboBox();
}
private void PopulateGridView(string connString, string sqlQuery)
{
String strconnetcion = connString;
SqlConnection con = new SqlConnection(strconnetcion);
try
{
con.Open();
SqlCommand sqlCmd = new SqlCommand();
sqlCmd.Connection = con;
sqlCmd.CommandType = CommandType.Text;
sqlCmd.CommandText = sqlQuery;
SqlDataAdapter sqlDataAdap = new SqlDataAdapter(sqlCmd);
DataTable dtRecord = new DataTable();
sqlDataAdap.Fill(dtRecord);
dataGridView1.DataSource = dtRecord;
dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (comboBox1.SelectedValue != null)
{
PopulateGridView(textBox1.Text, comboBox1.SelectedValue.ToString());
}
}
private void InsertInfo()
{
string connectionString = null;
SqlConnection connection;
SqlDataAdapter adapter = new SqlDataAdapter();
string value1 = "";
string value2 = "";
connectionString = @"Data Source=HP\SQLEXPRESS;database=MK;Integrated Security=true";
connection = new SqlConnection(connectionString);
foreach (int rowIndex in lstNewRows)
{
if (dataGridView1.Rows[rowIndex].Cells[0].Value != null && dataGridView1.Rows[rowIndex].Cells[1].Value != null)
{
value1 = dataGridView1.Rows[rowIndex].Cells[0].Value.ToString();
value2 = dataGridView1.Rows[rowIndex].Cells[1].Value.ToString();
***string sql = "insert into lol (name,marks) values('" + value1 + "','" + value2 + "')";***
try
{
connection.Open();
adapter.InsertCommand = new SqlCommand(sql, connection);
adapter.InsertCommand.ExecuteNonQuery();
MessageBox.Show("Row inserted !! ");
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
}
private void button1_Click(object sender, EventArgs e)
{
InsertInfo();
}
private void dataGridView1_DefaultValuesNeeded(object sender, DataGridViewRowEventArgs e)
{
lstNewRows.Add(e.Row.Index);
}
}
}
After going through the source, I understand what you are trying to accomplish. 通过源代码后,我了解您要完成的任务。 I will give my answer your problem first, but please read the recommendations after the answer because proceeding in the way you are onto now this application may end up as a big headache to whoever is going to maintain it.
我会首先回答你的问题,但请在回答后阅读建议,因为按照你现在的方式进行,这个应用程序最终可能会成为维护它的人的头痛。
Answer : 答案 :
Change your items to be as follows:
List _items = new List();
_items.Add("lol"); // removing select * from
_items.Add("datejoin"); // removing select * from
comboBox1.DataSource = _items;
Now in your PopulateGridView
function you can change the sqlQuery
to 现在在
PopulateGridView
函数中,您可以将sqlQuery
更改为
private void PopulateGridView(string connString, string sqlQuery) {
sqlQuery = "select * from "+sqlQuery;
then in your InsertInfo
function you can do the following (at the location where you are defining the string sql variable): 然后在您的
InsertInfo
函数中,您可以执行以下操作(在您定义字符串sql变量的位置):
string sql = string.Empty;
switch(comboBox1.SelectedValue) {
case "lol":
sql = "insert into lol (name,marks) values('" + value1 + "','" + value2 + "')";
break;
case "datejoin":
sql = "insert into datejoin (..."; // fill in the column and values as needed
break;
}
Recommendations : 建议 :
select *
, always try to mention the column names in a select query select *
,总是尝试在select查询中提及列名
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.