2014-03-29 4 views
0

'내가 오류가 나오는 데이터베이스 시리얼 통신에서 오는 새로운 데이터를 저장하려고 할 때마다 내 C#, 문제가있어 및오류 "근처의 구문이 잘못되었습니다 '/'

근처의 구문이 잘못 말한다/'

나는 모든 제안 모두가하는 듯했으나 그냥 늘 그것이 나오는 코드의 조각이다 stop..Here했습니다.

private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) 
{ 
    SqlConnection cn = new SqlConnection(global::test_new.Properties.Settings.Default.Database3ConnectionString); 
    try 
    { 
     string sql = "INSERT INTO PowerData (Date/Time,Power(W)) values(" + this.powerTextBox.Text + ",'" + this.powerTextBox.Text + "'"); 

     SqlCommand exeSql = new SqlCommand(sql, cn); 
     cn.Open(); 
     exeSql.ExecuteNonQuery(); 

     this.powerDataTableAdapter.Fill(this.database3DataSet.PowerData); 

    } 
    catch (Exception ex) 
    { 

    } 
} 
+1

열 이름과 관련된 문제 외에도 매개 변수를 사용하여 SQL 코드에 값을 삽입하는 방법을 살펴보아야합니다. 이유와 방법을 확인하려면 http://jmcilhinney.blogspot.com.au/2009/08/using-parameters-in-adonet.html – jmcilhinney

답변

3

당신은 탭에서 특수 문자를 이스케이프 할 필요가 MySQL의에서 /

INSERT INTO PowerData ([Date/Time], Power(W)) values ... 

르 및 열 이름은 MSSQL 사용 괄호 안에 탈출 역 따옴표를 사용합니다.

+0

이미 변경했지만 오류가 "Incorrect Syntax Near '/' . 계속 오류 메시지가 나타납니다 – user3474671

+0

정확한 오류 메시지는 무엇입니까? –

2

거기에 미친 열 이름이 있습니다. 이와 같은 열 이름에 특수 문자를 포함 시키려면 SQL의 대괄호로 묶어야합니다 (예 : [Date/Time]. 더 좋은 아이디어는 처음에는 그러한 문자를 사용하지 않는 것입니다.

+0

그래, 이미 변경되었지만 오류가 여전히 튀어 나와 컴파일러에서이 줄의 내용을 말합니다 .exeSql.ExecuteNonQuery(); – user3474671

+0

@ user3474671 그 라인에서 그것은 당신의 질의가 데이터베이스에 대해 실행되는 곳이기 때문에 실제 에러는'sql' 문자열의 질의에 있습니다. –

0

구문은 특수 문자

INSERT INTO PowerData 
([Date/Time], [Power(W)]) 
VALUES 
(GETDATE(), 'test1') 

DEMO

0

첫째, "this.powerTextBox.Text"모든 열을 탈출, 아래처럼한다 - 나는이 같은 안 추측하고있다 두 변수의 값

코드를 다음으로 변경하십시오.

DateTime dt = DateTime.Parse(this.powerTextBox.Text); 
string PowerW = this.powerTextBox.Text; 
string sql = "INSERT INTO PowerData ([Date/Time],[Power(W)]) values(@val1, @val2);" 

    SqlCommand exeSql = new SqlCommand(sql, cn); 
exeSql.Parameters.AddWithValue("@val1", dt); 
exeSql.Parameters.AddWithValue("@val2", PowerW); 
    cn.Open(); 
exeSql.ExecuteNonQuery(); 
관련 문제