2013-04-15 2 views
-5

그래서 다음 코드가 있지만 데이터베이스가 업데이트되지 않고 페이지에 오류가 표시되지 않는 것 같습니다. 빌드에 오류가 없지만 데이터가 입력되지 않습니다.ButtonClick 이벤트가 데이터를 추가하지 않음

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data.SqlClient; 
using System.Data; 

public partial class ValidateMe : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 
     SqlConnection connection = new SqlConnection("Data Source=MICROSOF-58B8A5\SQL_SERVER_R2;Initial Catalog=Movie;Integrated Security=True"); 

     connection.Open(); 

     if (TextBox8.Text == TextBox9.Text) 
     { 
      string UserName = TextBox7.Text; 
      string Password = TextBox8.Text; 
      string FirstName = TextBox1.Text; 
      string LastName = TextBox2.Text; 
      string Address = TextBox3.Text; 
      string PostCode = TextBox4.Text; 
      string Phone = TextBox5.Text; 
      string Email = TextBox6.Text; 

      string sqlquery = "INSERT INTO `users` (`user_id`, `username`, `first_name`, `last_name`, `password`, `address`, `postcode`, `phone`, `email`, `level`) VALUES (NULL, '@UserName', '@FirstName', '@LastName', '@Password', '@Address', '@PostCode', '@Phone', '@Email');"; 

      SqlCommand command = new SqlCommand(sqlquery, connection); 
     } 
    } 
} 

내가 누락 된 부분에 대한 도움은 크게 감사하겠습니다.

+1

누락 된 항목이 있습니까? 명령 작성, 매개 변수 추가 및 실행 ?? – Steve

+2

어 ...이 코드에는 많은 문제가 있습니다. C#을 사용하여 데이터베이스에 데이터를 삽입하는 방법에 대한 웹 검색을 통해 모든 문제를 해결하기 어려울 것입니다. 당신은 연결을 닫거나 처리하지 않습니다. 미리 작성한 명령을 실행하지 않고 명령에 매개 변수를 전달하지 않습니다. 웹상에서 시작하기에 충분한 정보가있을 것입니다 - 그리고 그것은 매우 단순하므로 걱정할 필요가 없습니다! – Pako

+0

연결을 닫는 것을 잊지 마십시오 ;-) 명령과 함께 매개 변수를 사용하고 매개 변수 바인딩 후이를 실행하십시오. –

답변

2

코드에 몇 가지 (기본) 단계가 누락되었습니다.

연결을 연 후 당신이해야 :

  • 빌드 명령
  • 를 명령에 필요한 매개 변수를 추가
  • 이 같이 연결

을 닫습니다 그것을 실행

string sqlquery = "INSERT INTO users (username, first_name, last_name, password," + 
        "address, postcode, phone, email, level) VALUES " + 
        "(@UserName, @FirstName, @LastName, @Password, " + 
        "@Address, @PostCode, @Phone, @Email);"; 

SqlCommand command = new SqlCommand(sqlquery, connection); 

command.Parameters.AddWithValue("@username", Username); 
..... 
// Add the other parameters 
..... 

// Execute the query 
command.ExecuteNonQuery(); 

// Close the connection 
connection.Close(); 

필드 이름에 백 스틱을 넣을 필요가 없으며 (SqlServer에는 필요하지 않음) 매개 변수 이름을 작은 따옴표로 묶지 않아야합니다.

그리고 마지막으로 한 메모. user_id이 Identity 필드 인 경우 명령 텍스트에 추가 할 필요가 없습니다.

+0

데이터를 추가했지만 데이터가 아직 입력되지 않아 SQL 연결이 작동하지 않는 것 같음 SqlConnection 연결 = 새 SqlConnection ("데이터 원본 = MICROSOF-58B8A5/SQL_SERVER_R2; 초기 카탈로그 = 영화 ; 통합 보안 = True "); –

+0

연결 문자열에 문제가있는 경우 연결을 열려고하면 오류가 발생합니다. – Steve

관련 문제