尝试将数据插入我的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行。
答案 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