我已经让这个程序在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);
}
}
}
答案 0 :(得分:2)
在浏览完资料后,我了解您要完成的工作。我会先回答你的问题,但请在回答之后阅读建议,因为按照你现在的方式进行,这个应用程序最终可能会成为维护它的人的头痛。
<强>答案强>:
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;
现在,在PopulateGridView
功能中,您可以将sqlQuery
更改为
private void PopulateGridView(string connString, string sqlQuery) {
sqlQuery = "select * from "+sqlQuery;
然后在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;
}
<强>推荐强>:
select *
,请务必在选择查询中提及列名称