SqlCommand cmd = new SqlCommand("insert into Student(@RegNo,@Name,@Address,@CreatedTime) values(@RegNo,@Name,@Address,Getdate())");
这里显示的错误类似于SqlException:
必须声明标量变量“@RegNo”。
该怎么办?感谢
答案 0 :(得分:2)
protected void Add_Click(object sender, EventArgs e)
{
string constr = ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString;
try {
using (SqlConnection con = new SqlConnection(constr))
using (SqlCommand cmd = new SqlCommand("insert into Student(RegNo,Name,Address,CreatedTime)values(@RegNo,@Name,@Address,Getdate())", con)) {
cmd.Parameters.AddWithValue("@RegNo", RegNo.Text);
cmd.Parameters.AddWithValue("@Name", Name.Text);
cmd.Parameters.AddWithValue("@Address", Address.Text);
con.Open();
cmd.ExecuteNonQuery();
}
} catch (Exception ex) {
//handle exception..
throw;
}
}
显示错误:
对象类型System.Web.UI.WebControls.TextBox中不存在任何映射 到已知的托管提供商本机类型。
答案 1 :(得分:1)
让我解释一下你为什么会得到错误。
您的sql命令是:$order=array_replace(array_fill_keys(array_column($array,'id'),$outlier),$order);
这意味着您告诉sql执行与此等效的查询:
SqlCommand cmd = new SqlCommand("insert into Student(@RegNo,@Name,@Address,@CreatedTime) values(@RegNo,@Name,@Address,Getdate())");
你可以看到这是不正确的。
执行insert into Student(@RegNo,@Name,@Address,@CreatedTime) values(1234,'name value','address value',GetDate()) -- i've put some vlaues for example
查询时,您需要指定列名称和值,名称进入第一个括号,值{@ 1}}后的第二个值关键字,逻辑上没有列名“@ RegNo”或“@ Name”而是使用数据库“RegNo”中指定的真实列名,“名称”,因此查询应如下所示:
insert
为何出现错误消息?
在sql变量中使用Values
前缀声明,例如:insert into Student(RegNo,Name,Address,CreatedTime) values(1234,'name value','address value',GetDate())
因此,在尝试执行查询时@
declare @a int=5;
将insert into Student(@RegNo,.......
识别为变量,由于无法找到声明,因此收到错误消息
必须声明标量变量@RegNo。
您应该仅使用'@'来指定不是列名的参数
在c#代码中试试这个:
sql
!注意:使用@RegNo
时,您始终可以先在SqlCommand cmd = new SqlCommand("insert into Student(RegNo,Name,Address,CreatedTime) values(@RegNo,@Name,@Address,@CreatedTime)");
cmd.Parameters.AddWithValue("@RegNo", "object value");
cmd.Parameters.AddWithValue("@Name", "object value");
cmd.Parameters.AddWithValue("@Address", "object value");
cmd.Parameters.AddWithValue("@RegNo", "object value");
cmd.Parameters.AddWithValue("@CreatedTime", DateTime.Now); //replaced GetDate with DateTime.Now
执行查询,看看您没有犯错误
答案 2 :(得分:1)
sql insert查询基本上有2个部分。
1)用于将值插入
的表ColumnNames2)插入实际值或具有值的@parameters。
你的SQL混合了1和2.
所以而不是
SqlCommand cmd = new SqlCommand("insert into Student(@RegNo,@Name,@Address,@CreatedTime) values(@RegNo,@Name,@Address,Getdate())");
应该是
SqlCommand cmd = new SqlCommand("insert into Student(RegNo,-[Name],Address,CreatedTime) values(@RegNo,@Name,@Address,Getdate())");
在此之后,您只需要在@variables
对象中添加所有SqlCommand
。我可以看到其他人已经建议你为此代码。