C# 通过C将数据插入SQL Server数据库#
代码如下:C# 通过C将数据插入SQL Server数据库#,c#,sql,database,C#,Sql,Database,代码如下: SqlConnection con = new SqlConnection(connectionString); string sql = "insert into student(std_year,std_faculty,std_roll,std_name) values (@year,@faculty,@roll,@name)"; //string sql = "update current_player set batsman1_name=@batsman1_name,bat
SqlConnection con = new SqlConnection(connectionString);
string sql = "insert into student(std_year,std_faculty,std_roll,std_name) values (@year,@faculty,@roll,@name)";
//string sql = "update current_player set batsman1_name=@batsman1_name,batsman2_name=@batsman2_name,bowler_name=@bowler_name";
SqlCommand cmd = new SqlCommand(sql, con);
cmd.Parameters.AddWithValue("@std_year", year);
cmd.Parameters.AddWithValue("@std_faculty", faculty);
cmd.Parameters.AddWithValue("@std_roll", Convert.ToInt32(txtroll.Text));
cmd.Parameters.AddWithValue("@std_name", txtname.Text);
try
{
con.Open();
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw ex;
}
finally
{
con.Close();
}
错误表示它无法识别标量变量
@year
,并表示必须声明它。有人能帮我吗?问题是您没有定义@year
参数
而不是这个
cmd.Parameters.AddWithValue("@std_year", year);
写这个
cmd.Parameters.AddWithValue("@year", year);
所有参数名称都是错误的。您的SQL语句包含参数
@year、@faculty、@roll、@name
,但您尝试添加名为@std\u year
等的参数
您需要在AddWithValue
中传递参数名称,如下所示:
cmd.Parameters.AddWithValue("@year", year);
cmd.Parameters.AddWithValue("@faculty", faculty);
cmd.Parameters.AddWithValue("@roll", Convert.ToInt32(txtroll.Text));
cmd.Parameters.AddWithValue("@name", txtname.Text);
试试这个
将参数值更改为
cmd.Parameters.AddWithValue("@std_year", year);
cmd.Parameters.AddWithValue("@std_faculty", faculty);
cmd.Parameters.AddWithValue("@std_roll", Convert.ToInt32(txtroll.Text));
cmd.Parameters.AddWithValue("@std_name", txtname.Text);
对这些
cmd.Parameters.AddWithValue("@year", year);
cmd.Parameters.AddWithValue("@faculty", faculty);
cmd.Parameters.AddWithValue("@roll", Convert.ToInt32(txtroll.Text));
cmd.Parameters.AddWithValue("@name", txtname.Text);
您必须传递与在查询中写入的参数同名的参数。您
AddWithValue
“@std\u year
”,但是您的查询具有@year
(对所有其他参数重复)不是很明显吗?您将参数名称声明为@year
,但尝试将@std_year
添加为值。它不是year,而是@std_year std_year是我在数据库中的列名,year是winform应用程序中的值,非常感谢Rajeev Kumar先生。这解决了我的问题std_year是数据库中的我的列名,year是winform应用程序中的值,无论数据库中的列名是什么,因为您在insert语句中已使用参数@year
映射了std_year
。因此,您需要定义@year
的值。代码将在您尝试时运行它的td_year是数据库中我的列名,year是来自winform应用程序的值,这与此无关。参数与字段名不同。参数名称是以@
开头的文本。您需要将这些值传递给AddWithValue
,而不是字段名