通过C#将数据插入SQL Server数据库

时间:2014-08-19 10:35:52

标签: 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,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,并表示必须声明它。任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

试试这个 将参数值更改为

    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);

您必须传递与您在查询中写入的名称相同的参数。

答案 1 :(得分:0)

问题是您尚未定义@year参数

而不是这个

cmd.Parameters.AddWithValue("@std_year", year);

写这个

cmd.Parameters.AddWithValue("@year", year);

答案 2 :(得分:0)

所有参数名称都是错误的。您的SQL语句包含参数@year,@faculty,@roll,@name,但您尝试添加名为@std_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);