为数据网格中的列提供变量名称

时间:2013-10-02 11:42:33

标签: c# wpf datagrid

我在DataSet的DataGrid中显示了数据。现在我想将一个列插入到SQL表中。我可以在Dataset中为我需要的列提供一个变量名,并在我的insert命令中调用它吗?

创建新的DataSet以保存工作表中的信息。

DataSet objDataset1 = new DataSet();

// Fill the DataSet with the information from the worksheet.
objAdapter1.Fill(objDataset1, "XLData");

// Bind data to DataGrid control.
dgCodeDisp.ItemsSource = objDataset1.Tables[0].DefaultView;

sc.Open();

插入命令

cmd = new SqlCommand("Insert into Table (Code, v1, v2, ID) values('" +dgCodeDisp    + "','" + v1.IsChecked.ToString() + "','" + v2.IsChecked.ToString() + "', '" + txtId.Text + "')", sc);
cmd.ExecuteNonQuery();

1 个答案:

答案 0 :(得分:1)

根据SQL(SqlServer,MySQL等),您应该使用参数化查询,否则您可以大范围开放sql-injection。对于SQL Server,它通常在发送命令时将“@”识别为解析的参数参考...仅为了说明我已经将参数命名为“@parm”,因此您可以遵循它而不是在谈论表的ACTUAL COLUMN并导致混淆。

cmd = new SqlCommand("Insert into Table (Code, v1, v2, ID) values( @parmCode, @parmV1, @parmV2, @parmID )", sc );

cmd.Parameters.Add( "@parmCode", dgCodeDisp );
cmd.Parameters.Add( "@parmV1", v1.IsChecked.ToString() );
cmd.Parameters.Add( "@parmV2", v2.IsChecked.ToString() );
cmd.Parameters.Add( "@parmID", txtId.Text );
cmd.ExecuteNonQuery();