2013-04-18 72 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

相關問題