解析查询时出错。 [令牌行号= 1,令牌行偏移= 52,令牌错误=)]

时间:2013-04-18 10:15:28

标签: c# visual-studio-2010 sql-server-ce

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

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行。

2 个答案:

答案 0 :(得分:0)

在不知道字段ID的数据类型的情况下,很难给出正确的答案。 但假设此字段是Text类型,那么您应该使用

进行编码
com.CommandText= "select name from customerinfo where id =@id";
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);

答案 1 :(得分: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