2013-04-18 45 views
1

尝试向我的SQl数据库插入数据时出现以下错误 SqlCeException未处理:解析查询时发生错误。 [令牌行号= 1,令牌行偏移= 52,令牌错误=)] 我的代码行从表customerinfo检索数据是解析查询时发生错误。 [令牌行号= 1,令牌行偏移量= 52,令牌出错=]]

SqlCeConnection con = new SqlCeConnection("Data Source = ward.sdf;password=wardrobe"); 
con.Open(); 
SqlCeCommand com = con.CreateCommand(); 
com.CommandText= "select name from customerinfo where [id] =" + textBox1.Text; 
SqlCeDataReader reader = com.ExecuteReader(); 
reader.Read(); 
textBox2.Text = reader.GetValue(0).ToString(); 

我试图从数据库中获取数据,并把它放在一个文本框。错误显然与第5行有关。

+0

你可以试试这个: com.CommandText = “从customerinfo选择名称,其中[ID] = '” + textBox1.Text + “'”; – zelmarou

+0

字段ID是什么类型的数据类型? – Steve

回答

0

不知道字段ID的数据类型,很难给出正确的答案。 但是,假设这个字段是文本类型的,那么你应该用

com.CommandText= "select name from customerinfo where id [email protected]"; 
com.Parameters.AddWithValue("@id", textBox1.Text); 
SqlCeDataReader reader = com.ExecuteReader(); 
if(reader.Read()) 
    textBox2.Text = (!reader.IsDBNull(reader.GetOrdinal("name")) ? reader[0].ToString() : string.Empty); 
0

我使用Visual Studio 2008和我的目标设备是WINCE设备代码。

在向SQL Server数据库中插入任何值时,出现“解析查询错误[令牌行号= 1令牌行偏移= 29令牌错误= 1]”的错误。

经过多次探索后,我发现实际上我的错误在哪里。早些时候,给列名我给它像“Ch 1”,“Ch 2”。 我刚刚更改了“我的列名称”,并将其设置为“Ch1”和“Ch2”,即我删除了该空间并且它工作正常。

这是我工作的代码

private void btnInsert_Click(object sender, EventArgs e) 
     { 
      SqlCeCommand cmd = con.CreateCommand(); 
      cmd.CommandText = "INSERT INTO Tb (Ch1, Chl2) VALUES (?, ?)"; 

      cmd.Parameters.Add(new SqlCeParameter("p1", SqlDbType.NText)); 
      cmd.Parameters.Add(new SqlCeParameter("p2", SqlDbType.Int)); 
      cmd.Parameters["p1"].Size = 50; 

      cmd.Prepare(); 
      cmd.Parameters["p1"].Value =textBox1.Text; 
      cmd.Parameters["p2"].Value =textBox2.Text; 
      cmd.ExecuteNonQuery(); 
      cmd.Parameters.Clear(); 
      displayTable(); 

     } 
    private void displayTable() 
     { 
      SqlCeCommand cmd = new SqlCeCommand("SELECT * FROM Tb", con1); 
      SqlCeDataReader reader = cmd.ExecuteReader(); 
      DataTable table = new DataTable(); 
      table.Columns.Add("Ch1", typeof(int)); 
      table.Columns.Add("Ch2", typeof(string)); 

      while (reader.Read()) 
      { 
       table.Rows.Add(reader.GetInt32(0), reader.GetString(1)); 
      } 
      reader.Close(); 
      dataGrid1.DataSource = table; 


     } 

希望它会帮助你。

参考波纹管链接,进一步的细节 http://technet.microsoft.com/en-us/library/aa226134%28v=sql.80%29.aspx

相关问题