1

在尝试将数据插入到我的 SQl db 时,我收到以下错误 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 行有关。

4

2 回答 2

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);
于 2013-04-18T10:30:01.190 回答
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

于 2014-09-24T07:10:26.023 回答