2013-03-05 22 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