2012-12-02 79 views
-2

我已经试过这几个小时,但我想不出它我们有什么错我的sql命令有什么问题?

var cmd = new SqlCommand(); 
cmd.Parameters.Clear(); 
cmd.Connection = mySqlConnection; 
cmd.CommandType = CommandType.Text; 
cmd.CommandText = 
    "select Calle.Id_Calle FROM" + 
     "TominPredial.Calle as Calle,"+ 
     "TominPredial.Colonia as Col," + 
     "TominPredial.Poblacion as Pob" + 
    "WHERE Calle.Nombre = @NombreCalle" + 
      "and Col.Id_Colonia = @id_col and Pob.Id_Poblacion = @id_pob"; 
cmd.Parameters.Add("@NombreCalle", nombreCalle); 
cmd.Parameters.Add("@id_col", id_col); 
cmd.Parameters.Add("@id_pob", id_pob); 
cmd.ExecuteScalar() 

它说近“大道”不正确的语法

+0

您正在从3个表中选择一个字段。你为什么不加入桌子? – polin

+0

@polin我不需要加入他们,我只需要Id,这就是为什么我使用ExecuteScalar – poz2k4444

+2

这是一个隐式的内部联接。 – melpomene

回答

10

有行之间没有空格:

"select Calle.Id_Calle FROM" + 
    "TominPredial.Calle as Calle,"+ 
    "TominPredial.Colonia as Col," + 
    "TominPredial.Poblacion as Pob" + 
"WHERE Calle.Nombre = @NombreCalle" + 
     "and Col.Id_Colonia = @id_col and Pob.Id_Poblacion = @id_pob"; 

这将使查询... FROMTominpredial.calle ... pobWHERE ..这将产生一个语法错误。

您必须在行末尾的关键字之间加空格。就像这样:

... 
"select Calle.Id_Calle FROM" + 
" TominPredial.Calle as Calle,"+ 
" TominPredial.Colonia as Col," + 
" TominPredial.Poblacion as Pob" + 
" WHERE Calle.Nombre = @NombreCalle" + 
" and Col.Id_Colonia = @id_col and Pob.Id_Poblacion = @id_pob"; 
/\ 
put a Spaces here 
+0

你是对的,谢谢! – poz2k4444

+1

这个错误是在另外两个地方。只需调试它,看到没有换行符的文本值,并查看您忘记了空间的位置。 – SimpleVar