【发布时间】:2016-04-26 17:23:35
【问题描述】:
我有下面显示的代码,我试图根据用户输入将某些值插入数据库。我需要验证用户输入,这就是我使用 SQL 命令进行插入的原因。
我可以使用 SQL 适配器运行它,但这似乎不是一种有效的方式,因为我需要对用户输入进行大量验证.....
问题:
我是这个 C# 的新手,我不知道如何在 cmd 参数中使用子查询。谁能告诉我如何使下面的代码工作?
if (MessageBox.Show("Do you really want to Insert these values?", "Confirm Insert", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
SqlCommand cmd = new SqlCommand(@"Insert INTO " + schemaName + "[TableLogic] (Logic_Formula,Logic_InputsCount,Logic_Inputs,Logic_ConvFactorID) VALUES (@formula, @inputscount, @inputs, @conversionfac)", con);
cmd.Parameters.Add("@formula", SqlDbType.NVarChar, 160).Value = textBox_Formula.Text;
cmd.Parameters.Add("@inputscount", SqlDbType.Int).Value = numeric_inputscount.Text;
cmd.Parameters.Add("@inputs", SqlDbType.NVarChar, 160).Value = textBox_Inputs.Text;
cmd.Parameters.Add("@conversionfac", SqlDbType.Int).Value = "(Select ConversionFactorID FROM " + schemaName + "[ConversionFactors] WHERE [conversionFactor_CF] =" + comboBox_ConfacValue.Text + " AND [ConversionFactor_Desc] = '" + combobox_conversionDescription.Text + "')";
int rows = cmd.ExecuteNonQuery();
MessageBox.Show("New Rule is Inserted Successfully.");
}
【问题讨论】:
-
对于 SQL Server 使用存储过程!
-
最好看看如何使用 ADO.NET 和 c#。有很多如何撰写文章或遵循示例。一旦您了解了如何查询的基础知识,然后在您的类中编写一个新方法,该方法可以获取
conversionfac的值并将其设置为@conversionfac参数的值。 IE。把你的问题分解成更小的部分。 -
@Igor 我同意你的 cmets...我可以创建一个 SQL 命令来获取“@conversionfac”的值,然后在代码中使用它...我只是想探索一下唯一的办法 ?因为它打破了问题,但增加了使用的代码行......
-
@GowthamRamamoorthy - 你可以,但你必须在命令文本中而不是在参数中这样做。参数总是单值或本身代表一个表,但永远不能是要执行的表达式/sql。
标签: c# .net visual-studio-2012 windows-applications sqlcommand