C# 如何给出ADO.NET参数

C# 如何给出ADO.NET参数,c#,sql,sql-server,ado.net,C#,Sql,Sql Server,Ado.net,我想创建一个SQL命令,将记录添加到数据库中。我尝试了以下代码,但似乎不起作用: SqlCommand comand = new SqlCommand("INSERT INTO Product_table Values(@Product_Name,@Product_Price,@Product_Profit,@p)", connect); SqlParameter ppar = new SqlParameter(); ppar.ParameterName = "@Product_Name"; p

我想创建一个SQL命令,将记录添加到数据库中。我尝试了以下代码,但似乎不起作用:

SqlCommand comand = new SqlCommand("INSERT INTO Product_table Values(@Product_Name,@Product_Price,@Product_Profit,@p)", connect);
SqlParameter ppar = new SqlParameter();
ppar.ParameterName = "@Product_Name";
ppar.Value = textBox1.Text;
MessageBox.Show("Done");
comaand.Parameters.Add(ppar);

在您的情况下,看起来您正在使用.NET。使用参数非常简单,如下所示:

C#


在您的情况下,看起来您正在使用.NET。使用参数非常简单,如下所示:

C#

试试这个

command.Parameters.AddWithValue("@parameter",yourValue);
command.ExecuteNonQuery();
我的意思是你忘了使用command.executeNonQuery()

试试这个

command.Parameters.AddWithValue("@parameter",yourValue);
command.ExecuteNonQuery();

我的意思是你忘了使用command.executeNonQuery()

我认为这对你很有用

SqlCommand command = new SqlCommand("inserting", con);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@Firstname", SqlDbType.NVarChar).Value = TextBox1.Text;
command.Parameters.Add("@Lastname", SqlDbType.NVarChar).Value = TextBox2.Text;
command.ExecuteNonQuery();

我认为这对你很有用

SqlCommand command = new SqlCommand("inserting", con);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@Firstname", SqlDbType.NVarChar).Value = TextBox1.Text;
command.Parameters.Add("@Lastname", SqlDbType.NVarChar).Value = TextBox2.Text;
command.ExecuteNonQuery();

应使用类似以下内容:

SqlCommand cmd = new SqlCommand("INSERT INTO Product_table Values(@Product_Name, @Product_Price, @Product_Profit, @p)", connect);
cmd.Parameters.Add("@Product_Name", SqlDbType.NVarChar, ProductNameSizeHere).Value = txtProductName.Text;
cmd.Parameters.Add("@Product_Price", SqlDbType.Int).Value = txtProductPrice.Text;
cmd.Parameters.Add("@Product_Profit", SqlDbType.Int).Value = txtProductProfit.Text;
cmd.Parameters.Add("@p", SqlDbType.NVarChar, PSizeHere).Value = txtP.Text;
cmd.ExecuteNonQuery();
假设@p参数是某个NVarChar

最好避免使用AddWithValue,请参见此处的原因:


另外,在INSERT SQL语句中,最好在值本身之前提供值的名称(如数据库中所定义的),如所示,应使用如下内容:

SqlCommand cmd = new SqlCommand("INSERT INTO Product_table Values(@Product_Name, @Product_Price, @Product_Profit, @p)", connect);
cmd.Parameters.Add("@Product_Name", SqlDbType.NVarChar, ProductNameSizeHere).Value = txtProductName.Text;
cmd.Parameters.Add("@Product_Price", SqlDbType.Int).Value = txtProductPrice.Text;
cmd.Parameters.Add("@Product_Profit", SqlDbType.Int).Value = txtProductProfit.Text;
cmd.Parameters.Add("@p", SqlDbType.NVarChar, PSizeHere).Value = txtP.Text;
cmd.ExecuteNonQuery();
假设@p参数是某个NVarChar

最好避免使用AddWithValue,请参见此处的原因:


另外,在INSERT SQL语句中,最好在值本身之前提供值的名称(如数据库中定义的),如

所示。你应该先试试,然后告诉我有什么问题。顺便说一句,上面代码中提到的“薪水”没有@at AddWithValue。@optional还是required?@FelixPamittan离开
AddWithValue
的一个不利方面是
command.Parameters.Add(“salary”,SqlDbType.NVarChar)。Value=txtSalary.Text将失效。如果你想避免它,你必须为所有类型指定一个
大小
;这变得异常乏味,甚至更容易出错。例如:空字符串的大小是多少?
int
的大小是多少?
唯一标识符的大小是多少*
nvarchar(最大值)
的大小是多少?这些都是有答案的东西;但是(非常)不明显。我想是的。你应该先试试,然后告诉我有什么问题。顺便说一句,上面代码中提到的“薪水”没有@at AddWithValue。@optional还是required?@FelixPamittan离开
AddWithValue
的一个不利方面是
command.Parameters.Add(“salary”,SqlDbType.NVarChar)。Value=txtSalary.Text将失效。如果你想避免它,你必须为所有类型指定一个
大小
;这变得异常乏味,甚至更容易出错。例如:空字符串的大小是多少?
int
的大小是多少?
唯一标识符的大小是多少*
nvarchar(最大值)
的大小是多少?这些都是有答案的东西;但是(非常)不明显。不要认为问题是关于如何使用存储过程,他们正在尝试在命令下面插入一个简单的inserth.Parameters.Add(“@ParamName”,SqlDbType.xx)。Value=someValue确实是最好的语法(如中所解释的)不要认为问题是关于如何使用存储过程,他们尝试在命令.Parameters.Add(“@ParamName”,SqlDbType.xx)上插入一个简单的命令。Value=someValue确实是最好的语法(如中所述)