我目前正致力于.net MVC的最后一年项目。 当我打开Location_new(在LocationController中执行操作)并单击提交时,它会显示错误
“
列名或提供的值数与表不匹配 定义
“
描述:执行期间发生了未处理的异常 当前的网络请求。请查看堆栈跟踪了解更多信息 有关错误的信息以及它在代码中的起源。
异常详细信息:System.Data.SqlClient.SqlException:列名称或 提供的值的数量与表定义不匹配。
来源错误:
第22行:第23行:conn.Open();第24行:int count = command.ExecuteNonQuery();第25行:conn.Close(); 第26行:
源文件:C:\ Users \ Dev D \ Documents \ Visual Studio 2015 \ Projects \ MySafar \ MySafar \ Models \ DBUtility.cs专栏:24
Location.cs(查询的模型类)
public class Location
{
public int LocationID;
public string LocationName;
public string PhotoPath;
public string Details;
public string CityID;
public int Insert()
{
string query = "Insert Location VALUES(@LocationName, @PhotoPath, @Details, @CityID)";
List<SqlParameter> parameters = new List<SqlParameter>();
parameters.Add(new SqlParameter("@LocationName", this.LocationName));
parameters.Add(new SqlParameter("@PhotoPath", this.PhotoPath));
parameters.Add(new SqlParameter("@Details", this.Details));
parameters.Add(new SqlParameter("@CityID", this.CityID));
return DBUtility.ModifyData(query, parameters);
}
DBUtility.cs(数据库的模型类)
public class DBUtility
{
public static int ModifyData(String query, List<SqlParameter> parameter)
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=\"C:\\Users\\Dev D\\Documents\\Visual Studio 2015\\Projects\\MySafar\\MySafar\\App_Data\\MySafarDB.mdf\";Integrated Security=True";
SqlCommand command = new SqlCommand();
command.Connection = conn;
command.CommandText = query;
command.Parameters.AddRange(parameter.ToArray());
conn.Open();
int count = command.ExecuteNonQuery();
conn.Close();
return count;
}
AdminController
public ActionResult Location_New()
{
return View();
}
[HttpPost]
public ActionResult Location_New_Submit()
{
Location l = new Location();
l.LocationName = Request.Form["LocationName"];
l.PhotoPath = Request.Form["PhotoPath"];
l.Details = Request.Form["PhotoPath"];
//l.CityID = Convert.ToInt32(Request.Form["CityID"]);
l.CityID = Request.Form["CityID"];
l.Insert();
return RedirectToAction("Location_List");
}
[HttpPost]
public ActionResult Location_List()
{
return View();
}
答案 0 :(得分:0)
在语句中指定列,如果您有一个不指定值的标识字段,则会发生此错误。
而不是
string query = "Insert Location VALUES(@LocationName, @PhotoPath, @Details, @CityID)";
使用
string query = "Insert INTO Location(LocationName, PhotoPath, Details, CityID) VALUES(@LocationName, @PhotoPath, @Details, @CityID)";
只需确保将它们更改为您的实际列名称,我假设我的示例的参数名称之外的名称。