![](/img/trans.png)
[英]Error “Column name or number of supplied values does not match table definition”
[英]Column name or number of supplied values does not match table definition - .NET MVC
我目前正在.net MVC中從事最后一年的項目。 當我打開Location_new(LocationController中的Action)並單擊Submit時,它顯示錯誤
”
列名或提供的值數與表定義不匹配。
”
說明:執行當前Web請求期間發生未處理的異常。 請查看堆棧跟蹤,以獲取有關錯誤及其在代碼中起源的更多信息。
異常詳細信息: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;
}
管理員控制器
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();
}
在語句中指定您的列,如果您有一個身份字段,而您不想為其指定值,則會發生此錯誤。
代替
string query = "Insert Location VALUES(@LocationName, @PhotoPath, @Details, @CityID)";
采用
string query = "Insert INTO Location(LocationName, PhotoPath, Details, CityID) VALUES(@LocationName, @PhotoPath, @Details, @CityID)";
只需確保將其更改為您的實際列名,在我的示例中,我假設這些名稱均來自參數名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.