0

我已经在 DataSet 的 DataGrid 中显示了数据。现在我想将其中的一列插入到 SQL 表中。我可以在数据集中给我需要的列一个变量名并在我的插入命令中调用它吗?

创建新的 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();
4

1 回答 1

1

根据 SQL(SqlServer、MySQL 等),您应该使用参数化查询,否则您可以为 sql-injection 敞开大门。对于 SQL Server,它通常在发送命令时将“@”识别为解析的参数参考...仅用于澄清,我将参数命名为“@parm”,以便您可以遵循它不是在谈论表的实际列并造成混乱。

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();
于 2013-10-02T14:54:17.693 回答