2013-03-05 86 views
2

我無法在數據表格中看到添加的數據這是代碼:在表格中輸入的數據不會在表格中獲得插入

我正在使用Visual Studio 2010 Express。

private void button1_Click(object sender, EventArgs e) 
{ 
    string t1 = textBox1.Text; 

    SqlCeConnection conn = 
     new SqlCeConnection(@"Data Source=|DataDirectory|\Database1.sdf"); 

    conn.Open(); 

    SqlCeCommand cmdInsert = conn.CreateCommand(); 
    cmdInsert.CommandText = "INSERT TO table_name (Column1) VALUES (t1)"; 

    cmdInsert.ExecuteNonQuery(); 

    conn.Close(); 
} 

它不點擊按鈕後,插入到數據表,它給我的

cmdInsert.ExecuteNonQuery(); 

它調試它,但是當我按一下按鈕,就說明我的錯誤錯誤說

SqlCeException未處理。解析查詢時出錯。 [令牌行號= 1,令牌行偏移量= 8,令牌出錯= TO]

+0

是否插入工作的時候,你在SSMS運行呢? – Brian 2013-03-05 19:34:53

回答

7

嘗試:

cmdInsert.Parameters.AddWithValue("@t1", textBox1.Text); 
cmdInsert.CommandText = "insert INTO table_name (Column1) VALUES (@t1)"; 
1

您的sql查詢有誤。

而不是

cmdInsert.CommandText = "INSERT TO table_name (Column1) VALUES (t1)"; 

應該有

cmdInsert.CommandText = "INSERT INTO table_name (Column1) VALUES (t1)"; 
+0

變量't1'仍然無法到達。它需要是一個參數化查詢,並且需要將一個參數添加到命令中,就像@Andomar提供的答案中一樣。 – 2013-03-05 19:39:11

3

有兩個問題與您的代碼:

  • SQL語句中的語法錯誤 - 您應該編寫INSERT INTO而不是INSERT TO
  • 您不能直接在SQL字符串中使用t1。儘管可以按照其他註釋中的建議連接字符串,但最好使用parametrized命令。

這裏是修正版本:

SqlCeCommand cmdInsert = conn.CreateCommand(); 
cmdInsert.CommandText = "INSERT INTO table_name (Column1) VALUES (@t1)"; 
cmdInsert.Parameters.AddWithValue("@t1", t1); 
cmdInsert.ExecuteNonQuery(); 

有關命令參數的更多詳細信息,請參見Why do we need SqlCeCommand.Parameters.AddWithValue() to Insert a value?

0

您需要傳遞值t1,可能帶有一個參數。

private void button1_Click(object sender, EventArgs e) 
{ 
    string t1 = textBox1.Text; 
    SqlCeConnection conn = 
     new SqlCeConnection(@"Data Source=|DataDirectory|\Database1.sdf"); 
    conn.Open(); 
    SqlCeCommand cmdInsert = conn.CreateCommand(); 
    cmdInsert.CommandText = "INSERT INTO table_name (Column1) VALUES (@t1)"; 
    var parameter = cmdInsert.CreateParameter(); 
    parameter.Value = t1; 
    parameter.ParameterName = "@t1"; 

    cmdInsert.Parameters.Add(parameter); 

    cmdInsert.ExecuteNonQuery(); 
    conn.Close(); 
} 
+0

對不起,我沒有看到,我更新了答案。 – 2013-03-05 19:43:16

1
string t1 = textBox1.Text; 
      SqlCeConnection conn = new SqlCeConnection(@"Data Source=|DataDirectory|\Database1.sdf"); 
      conn.Open(); 
      SqlCeCommand cmdInsert = conn.CreateCommand(); 
      cmdInsert.CommandText = "INSERT into table_name (Column1) VALUES ('" + t1 + "')"; 
      cmdInsert.ExecuteNonQuery(); 
      conn.Close(); 
+4

這是一個新的查詢的教學時刻。我們**不應該告訴OP不使用參數化查詢。請看下面的Andromar的回答。 – Brian 2013-03-05 19:42:49

+0

@布萊恩現在好嗎? – kashif 2013-03-05 19:46:27

+0

編號'INSERT TO'是錯誤的語法,不是嗎? :) – Brian 2013-03-05 19:47:41