2011-10-15 3 views
0

SQLClient와 모두에 대해 새롭고 저의 SQL 테이블에 문제가 있습니다. 코드를 실행하면 데이터가 업데이트되는 대신 기존 데이터에 연결됩니다. tables..here의 내 코드 당신이 INSERT 기능을 사용하고SQL 테이블의 데이터 추가 및 업데이트

SqlConnection conneciones = new SqlConnection(connectionString); 
SqlCommand cmd; 
conneciones.Open(); 
//put values into SQL DATABASE Table 1 
for (int ok = 0; ok < CleanedURLlist.Length; ok++) 
{ 
    cmd = new SqlCommand("insert into URL_Entries values('" + CleanedURLlist[ok] + "' , '" + DateTime.Now + "' , '" + leak + "')", conneciones); 
    cmd.ExecuteNonQuery(); 
} 
conneciones.Dispose(); 
+1

새 레코드를 삽입하거나 기존 레코드를 업데이트하려고하십니까? 이 테이블을 실행 한 후 테이블 행이 어떤 모습인지 샘플을 제공 할 수 있습니까? –

+1

BTW에서는 이러한 "입력 변수"에 존재할 수있는 특수 문자를 견고하게 처리하고 SQL 삽입으로부터 자신을 보호하기 위해 바운드 매개 변수를 사용합니다. –

+0

Iam이 값을 삽입하려고 시도한 다음 삽입 후 테이블의 값을 테이블의 기존 값에 새 값을 추가하는 대신 업데이트하려고합니다. 업데이트의 예를 들어 주시겠습니까? –

답변

0

삽입, 업데이트 및 asp.net 및 C# 및 SQL Server 데이터베이스

를 사용하여 레코드를 삭제, 읽기 ... 난 당신이, 삽입 및 삭제 기능 개선 업데이트에 대한 이해를 바랍니다,

코드 조각을이 함수를 살펴 보자

static void Read() 
    { 
    try 
    { 
     string connectionString = 
      "server=.;" + 
      "initial catalog=employee;" + 
      "user id=sa;" + 
      "password=sa123"; 
     using (SqlConnection conn =new SqlConnection(connectionString)) 
     { 
      conn.Open(); 
      using (SqlCommand cmd = new SqlCommand("SELECT * FROM EmployeeDetails", conn)) 
      { 
       SqlDataReader reader = cmd.ExecuteReader(); 

       if (reader.HasRows) 
       { 
        while (reader.Read()) 
        { 
         Console.WriteLine("Id = ", reader["Id"]); 
         Console.WriteLine("Name = ", reader["Name"]); 
         Console.WriteLine("Address = ", reader["Address"]); 
        } 
       } 

       reader.Close(); 
      } 
     } 
    } 
    catch (SqlException ex) 
    { 
     //Log exception 
     //Display Error message 
    } 
} 

static void Insert() 
{ 
    try 
    { 
     string connectionString = 
      "server=.;" + 
      "initial catalog=employee;" + 
      "user id=sa;" + 
      "password=sa123"; 
     using (SqlConnection conn =new SqlConnection(connectionString)) 
     { 
      conn.Open(); 
      using (SqlCommand cmd = new SqlCommand("INSERT INTO EmployeeDetails VALUES(" + 
        "@Id, @Name, @Address)", conn)) 
      { 
       cmd.Parameters.AddWithValue("@Id", 1); 
       cmd.Parameters.AddWithValue("@Name", "Amal Hashim"); 
       cmd.Parameters.AddWithValue("@Address", "Bangalore"); 

       int rows = cmd.ExecuteNonQuery(); 

       //rows number of record got inserted 
      } 
     } 
    } 
    catch (SqlException ex) 
    { 
     //Log exception 
     //Display Error message 
    } 
} 

static void Update() 
{ 
    try 
    { 
     string connectionString = 
      "server=.;" + 
      "initial catalog=employee;" + 
      "user id=sa;" + 
      "password=sa123"; 
     using (SqlConnection conn = ew SqlConnection(connectionString)) 
     { 
      conn.Open(); 
      using (SqlCommand cmd = 
      new SqlCommand("UPDATE EmployeeDetails SET [email protected], [email protected] WHERE [email protected]", conn)) 
      { 
       cmd.Parameters.AddWithValue("@Id", 1); 
       cmd.Parameters.AddWithValue("@Name", "Munna Hussain"); 
       cmd.Parameters.AddWithValue("@Address", "Kerala"); 

       int rows = cmd.ExecuteNonQuery(); 

       //rows number of record got updated 
      } 
     } 
    } 
    catch (SqlException ex) 
    { 
     //Log exception 
     //Display Error message 
    } 
} 

static void Delete() 
{ 
    try 
    { 
     string connectionString = 
      "server=.;" + 
      "initial catalog=employee;" + 
      "user id=sa;" + 
      "password=sa123"; 
     using (SqlConnection conn = ew SqlConnection(connectionString)) 
     { 
      conn.Open(); 
      using (SqlCommand cmd = 
       new SqlCommand("DELETE FROM EmployeeDetails " + 
        "WHERE [email protected]", conn)) 
      { 
       cmd.Parameters.AddWithValue("@Id", 1); 

       int rows = cmd.ExecuteNonQuery(); 

       //rows number of record got deleted 
      } 
     } 
    } 
    catch (SqlException ex) 
    { 
     //Log exception 
     //Display Error message 
    } 
} 
+0

고마워요! 하지만이 .. 주어진 업데이트 예제를 시도했다. 분명히 그것은 몇 가지 예외를 제공합니다. 여기 코드가 있습니다 : –

+0

코드 하단에 .. –

+0

@ShahvezIrfan 어디에서 시도한 코드 ... 당신이 얻고있는 예외 ..... –

0

를 레코드, 즉 당신이 업데이 트를 원하는 경우

, 당신이 UPDATE 기능을 할 것 '새 레코드 추가'

UPDATE tablename 
SET column1 = 'x', column2 = 'y' 
WHERE id = z 
+0

코드, XML 또는 데이터 샘플을 게시하는 경우 텍스트 편집기에서 해당 행을 강조 표시하고 편집기 툴바에서 "코드 샘플"단추 ('{}) '를 클릭하여 멋지게 형식을 지정하고 구문을 강조 표시하십시오! –

0

코드에 새 레코드가 삽입되어야하지만 그렇지 않은지 또는 기존 레코드를 업데이트하려고하는지 명확하지 않습니다.

SQL Server 작업에 익숙하지 않다는 점을 제외하고는 알아 두어야 할 몇 가지 사항이 있습니다.

  1. 자동으로 자원을 처분하는 using를 사용해야합니다. 이렇게하면 연결이 끊어 지므로 열린 연결이 끊어지지 않습니다.

  2. sql injection 공격으로부터 보호하려면 매개 변수를 사용해야합니다. 귀하의 경우 매개 변수를 사용하는 또 다른 이점은 모든 명령문에 대해 새로운 명령을 작성할 필요가 없다는 것입니다. 예를 들어

: 귀하의 코멘트 당

using (var connection = new SqlConnection(connectionString) 
using (var command = connection.CreateCommand()) 
{ 
    command.CommandText = "insert into URL_Entries values(@url, @now, @leak)"; 

    command.Parameters.AddWithValue("@now", DateTime.Now); 
    command.Parameters.AddWithValue("@lead", leak); 

    // update to correspond to your definition of the table column 
    var urlParameter = command.Parameters.Add(new SqlParameter("@url", SqlDbType.VarChar, 100)); 

    connection.Open(); 

    for (int ok = 0; ok < CleanedURLlist.Length; ok++) 
    { 
     urlParameter.Value = CleanedURLlist[ok]; 
     command.ExecuteNonQuery(); 
    } 
} 

, 당신이 업데이 트를 수행하려는 경우, 당신은 업데이트 할 행을 식별하는 매개 변수 (들)를 포함해야합니다. 이 행이 단일 행 인 경우 기본 키 값을 사용하십시오.

command.CommandText = "update URL_Entries set UrlColumn = @url, ModifiedDate = @now where ID = @id"; 
관련 문제