2010-05-02 4 views
1

В чем проблема в моем коде?select statement in C#

string constr = "Provider=Microsoft.Jet.OLEDB.4.0;" 
    + "Data Source=C:\\Users\\Simon\\Desktop\\test5\\test5\\test5\\save.mdb"; 

OleDbConnection conn = new OleDbConnection(constr); 
string sql = "SELECT users.user_name,naziv,obroki_save.datum" 
    + "FROM zivila JOIN obroki_save ON zivila.ID=obroki_save.ID_zivila" 
    + "JOIN users ON obroki_save.ID_uporabnika=users.ID"; 
    OleDbCommand cmd = new OleDbCommand(sql, conn); 
conn.Open(); 
OleDbDataReader reader; 
reader = cmd.ExecuteReader(); 

while (reader.Read()) 
{ 
    Console.Write(reader.GetString(0).ToString() + " ,"); 
    Console.Write(reader.GetString(1).ToString() + " ,"); 
    Console.WriteLine(""); 
} 

reader.Close(); 
conn.Close(); 
+1

@Simon: в будущем обратите внимание на проблему, с которой вы столкнулись, вместе с кодом. –

+1

Вы говорите о читаемости? hardcoded-in-code неправильный полный SQL? или любые другие проблемы? другими словами, если вы заявляете о своих конкретных потребностях, вам гораздо легче помочь :) –

+1

это так, что он находится в кошельке, так что я представляю сам код sql – simon

ответ

6

Если вы запустите его в отладчике вы можете увидеть проблему:

SELECT users.user_name, naziv,obroki_save.datumFROM zivila JOIN obroki_save ... 
              ^^^^ 

Вы отсутствуют пробелы в вашем SQL. Это должно быть так:

string sql = "SELECT users.user_name,naziv,obroki_save.datum " // << here 
+ "FROM zivila JOIN obroki_save ON zivila.ID=obroki_save.ID_zivila " // << here 
+ "JOIN users ON obroki_save.ID_uporabnika=users.ID"; 
+0

все еще говорит, что у меня есть ошибка в заявлении от – simon

+0

@simon: Можете ли вы разместить полное сообщение об ошибке, пожалуйста? –

+0

Ошибка синтаксиса в предложении FROM. – simon

2

Это доступ, поэтому вам нужны скобки, и вам нужно выбрать тип JOIN. LEFT и INNER являются обычным выбором, поэтому:

SELECT users.user_name,naziv,obroki_save.datum 
FROM (zivila 
LEFT JOIN obroki_save ON zivila.ID=obroki_save.ID_zivila) 
LEFT JOIN users ON obroki_save.ID_uporabnika=users.ID 
+0

@Remou теперь я пропустил эту проблему, так что спасибо! Но здесь есть новая проблема, которая происходит на линии while (reader.Read()) {вот ошибка} -Указанный приведение недействительно. – simon