2014-07-23 2 views
0

일부 데이터를 보내기 위해 간단한 mysql 클라이언트를 만들고 있습니다. 날짜 형식을 다음과 같은 형식으로 사용하려면 테이블이 필요합니다. 2014-07-04C# 테이블 이름에 대한 mysql 쿼리의 매개 변수에서 문자 이스케이프

(-) 때문에 백틱 (`)으로 묶어야합니다. 다음은 내 코드입니다 :

You have an error in your SQL syntax; check the manual that corresponds to your MySQL  server version for the right syntax to use near ''2014-06-29' (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, Name VARCHAR(40), aSta' at line 1 

그래서 나는를 연결하는 "`"을 사용하여 같은이 문제를 해결하기 위해 몇 가지 방법으로 시도했다 : 나는이 코드를 사용하는 경우

public bool Update() 
    { 
     try 
     {     
      MySqlCommand cmd = connection.CreateCommand(); 
      cmd.Parameters.AddWithValue("@TbName", ""); 
      foreach (Employee emp in this.employees) 
      { 
       foreach(shift singleShift in emp.shifts) 
       { 
        cmd.CommandText = "CREATE TABLE IF NOT EXISTS @TbName (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, Name VARCHAR(40), aStart VARCHAR(5), aStop VARCHAR(5), Lunch VARCHAR(5), B1 VARCHAR(5), B2 VARCHAR(5), B3 VARCHAR(5));";                  
        cmd.Parameters["@TbName"].Value = singleShift.aDate; // singleShift.aDat = 2014-07-24      
        cmd.ExecuteNonQuery();    
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      return false; 
     } 
      return true; 
    } 

,이 오류가 발생합니다

0 :이 오류가

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''\`2014-06-29\`' (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, Name VARCHAR(40), ' at line 1 

및 사용 MySqlHelper.EscapeString : 매개 변수하지만 난이 오류가

테이블 이름을 달리 지정해야하지만 현재 컨텍스트에서는 불가능하다는 것을 알고 있습니다. 이 문제를 해결하려면 어떻게해야합니까?

+1

테이블은 처음에는 테이블이 아니어야합니다. "shift_date"열을 만들고 모든 데이터를 하나의 테이블에 저장하십시오. 해당 데이터 조각이 테이블 이름으로 존재할 때 데이터를 쿼리하면 끔찍한 엉망이됩니다. – nvoigt

+0

@noveigt 그러나 더 많은 행이 추가됩니다. 나는 Start, Stop, Lunch, + Break 3 시간으로 300 명의 직원을 고용해야하는 14 가지 다른 날짜를 의미합니다. 느리게 만들지 않겠습니까? – Gab

+1

데이터베이스가 구축되었다고 생각하는 점 :) 유일한 점은 데이터를 저장하는 것입니다. 데이터베이스보다 똑똑해 지려고하지 마십시오. 작동하지 않습니다. 데이터베이스 디자인에 관한 좋은 책을 얻으십시오. 자신이 테이블을 동적으로 생성하는 경우, 출혈이있는 곳 (힌트 : 관리 인격이 출혈이 아니라 바닐라처럼)이거나 잘못하고 있습니다. – nvoigt

답변

0

create a table with date name

아니, 당신과 함께 특히 테이블 이름으로 날짜를 사용할 수 없습니다 -. 다른 것으로 변경하십시오.

관련 문제