我在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();
答案 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();