2016-08-20 5 views
2

표시되는 모든 데이터 (데이터베이스의 열)를 사용자가 입력하고 입력 한 후 제출하도록합니다. 나는이 ID와 CompanyID를 얻음으로써 HTML.HiddenFor 요소 중 하나로 자동 생성된다.System.Data.SqlClient.SqlException : 제공된 값의 열 이름 또는 번호가 테이블 정의와 일치하지 않습니다.

System.Data.SqlClient.SqlException: Column name or number of supplied values does not match table definition..

모델 :

namespace Project.Models 
{ 
    public class Contact 
    { 
     public int Id { get; set; } 
     public string FirstName { get; set; } 
     public string LastName { get; set; } 
     public string Email { get; set; } 
     public int Phone { get; set; } 
     public int CompanyID { get; set; } 
    } 
} 

보기 :

@model Project.Contact 

<h2>Create Contact</h2> 

@using (Html.BeginForm("Create", "Home", FormMethod.Post)) 
{ 
    <table> 
     <tr> 
      <th>First name</th> 
      <th>Last name</th> 
      <th>Email</th> 
      <th>Phone</th> 
     </tr> 
     <tr> 
      <td>@Html.HiddenFor(m => m.Id)</td> 
      <td></td> 
      <td>@Html.TextBoxFor(m => m.FirstName)</td> 
      <td>@Html.TextBoxFor(m => m.LastName)</td> 
      <td>@Html.TextBoxFor(m => m.Email)</td> 
      <td>@Html.TextBoxFor(m => m.Phone)</td> 
      <td>@Html.HiddenFor(m => m.CompanyID)</td> 
     </tr> 

    </table> 
    <br /> 
    <input type="submit" name="btn" class="btn-primary" value="Create" /> 
} 

컨트롤러 :

using Arbetsprov_Sublime___Andre_Kordasti.Models; 
using System.Collections.Generic; 
using System.Data.SqlClient; 
using System.Web.Mvc; 

namespace Arbetsprov_Sublime___Andre_Kordasti.Controllers 
{ 
    public class HomeController : Controller 
    { 
     public ActionResult Index() 
     { 
      return View(); 
     } 

     [HttpGet] 
     public ActionResult Create() 
     { 
      return View(); 
     } 

     [HttpPost] 
     public ActionResult Create(Contact model) 
     { 
      var connection = new SqlConnection(@"Data Source=.\SQLExpress;Initial Catalog=Sublime;Integrated Security=True"); 
      connection.Open(); 

      var command = new SqlCommand("INSERT INTO Contact Values('" + model.Id + "','" + model.FirstName + " " + model.LastName + "','" + model.Email + " " + model.Phone + "','" + model.CompanyID + "')", connection); 
      command.ExecuteNonQuery(); 

      return View(); 
     } 
    } 
} 
+0

"INSERT INTO 연락처"는 "연락처 *에서 선택"이어야합니다. –

+0

그래,하지만 도움이되지 않습니다. 연락처 목록 만 가져옵니다. 새 연락처를 만들고 싶습니다. – Malphai

+0

현재 데이터베이스에서 정보를 가져 와서 개체에 채 웁니다. 당신은 1) 귀하의 연락처 개체를 엔티티 프레임 워크에 매핑하거나 2) "연락처 (열 이름) values ​​()"유형의 쿼리를 생성하고 해당 쿼리를 실행해야합니다. –

답변

1
var command = new SqlCommand("INSERT INTO Contact(Id,FirstName,LastName,Email,Phone,CompanyId) Values('" + model.Id + "','" + model.FirstName + " " + model.LastName + "','" + model.Email + " " + model.Phone + "','" + model.CompanyID + "')", connection); 
command.ExecuteNonQuery(); 

(테이블의 id 컬럼은 자동 증가 인 경우) u가 어떤 열을 제공하고 있는지 알려주지 않으므로 sql은 언급되지 않은 속성이 autoGenerated가되어야 함을 알게됩니다.

+0

내 ID가 자동으로 생성 된 것 같습니다. 어떻게 수정해야합니까? – Malphai

+0

var command = new SqlCommand ("INSERT INTO 연락처 (이름, 성, 전자 메일, 전화 번호, CompanyId) 값 (" '+ model.FirstName + ""+ model.LastName + "', +"model.Email + + model.Phone + " '," "+ model.CompanyID +"') ", 연결); command.ExecuteNonQuery(); – Road2PreSchool

+0

오류가 발생합니다. "System.Data.SqlClient.SqlException : INSERT 문의 VALUES 절에 지정된 값보다 많은 열이 있습니다.VALUES 절의 값 수는 INSERT 문에 지정된 열의 수와 일치해야합니다. " – Malphai

0

아마 상대 표 "ID"열 값 리피터. 예 : 현재 ID가 이미

var command = new SqlCommand("INSERT INTO Contact (Id, FirstName, LastName, Email , Phone, CompanyID) Values('" + model.Id + "','" + model.FirstName + " " + model.LastName + "','" + model.Email + " " + model.Phone + "','" + model.CompanyID + "')", connection); 
command.ExecuteNonQuery(); 

이 있거나 당신이 말할 필요가 자동 생성 할 수있는 열이있는 경우

var command = new SqlCommand("INSERT INTO Contact (FirstName, LastName, Email , Phone, CompanyID) Values('" + model.FirstName + " " + model.LastName + "','" + model.Email + " " + model.Phone + "','" + model.CompanyID + "')", connection); 
command.ExecuteNonQuery(); 
+0

내 ID가 자동으로 생성 된 것 같습니다. 어떻게 수정해야합니까? – Malphai

+0

오류가 발생합니다 : "System.Data.SqlClient.SqlException : INSERT 문에 VALUES 절에 지정된 값보다 많은 열이 있습니다 VALUES 절의 값 수가 INSERT 문에 지정된 열의 수와 일치해야합니다. " – Malphai

0

ID를 보내지 마십시오

var command = new SqlCommand("INSERT INTO Contact(FirstName,LastName,Email,Phone,CompanyId) Values("'"+ model.FirstName + "',' " + model.LastName + "','" + model.Email + "',' " + model.Phone + "','" + model.CompanyID + "')", connection); 
command.ExecuteNonQuery(); 

그리고 만약 그것이 작동하지 않는다면 예외가 발생했다는 것을 알려주거나 동일하게 변경됩니다.

그리고 당신이 사용하고있는 U 코멘트에 나를 보내고있는 쿼리에는 'comass missing'이 있습니다. ','.

그래서 u는 당신이 3 열을 언급하지만이 값을 준 있기 때문에 U에게 같은 오류를 줄 것이다

INSERT INTO tbl(Column1,Column2,Column3) values ('value1''value2'+','value3') 

을 말할 때. 희망이 분명 해요.

관련 문제