// Add into DB
using (tblArtworkTemplatesTableAdapter tblAdapter = new tblArtworkTemplatesTableAdapter())
{
tblAdapter.Insert(DateTime.Now, "@specID");
"@specID" = int.Parse(lstChooseSpec.SelectedValue)
}
我知道代码是错的,只是为了说明我的目标,我如何对输入进行简化?
答案 0 :(得分:2)
一般来说,这取决于。如果您正在使用任何类型的ORM,如LINQ to SQL或NHibernate,它将为您做到没有问题。如果你正在使用Plain ADO对象(我认为是这种情况),那么你将不得不使用Command(或SQLCommand或任何其他ICommand实现)对象并使用SQLParameter类(或其他参数类)。
ICommand拥有您可以随意编辑的参数集。
SqlCommand cmd = new SqlCommand(
"select * from STH where column = @SpecID", conn);
//it might be useful to specify a type as well
SqlParameter param = new SqlParameter();
param.ParameterName = "@SpecID";
//I woudl use the TryParse method though
param.Value = int.Parse(lstChooseSpec.SelectedValue);
cmd.Parameters.Add(param);
答案 1 :(得分:1)
这一行
"@specID" = int.Parse(lstChooseSpec.SelectedValue)
不正确。您不能为常量赋值。你的意思可能是
specId = int.Parse(lstChooseSpec.SelectedValue);
其余代码令人困惑。为什么要将lstChooseSpec.SelectedValue
解析为整数,然后尝试将其作为DateTime添加到适配器? C#是强类型的:某些内容可以是int
或DateTime
,但不能同时为。{/ p>
如果您可以发布方法的其余部分,可能会有所帮助。