выберите заявление в C # - PullRequest
1 голос
/ 02 мая 2010

Где проблема в моем коде?

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();

Ответы [ 2 ]

6 голосов
/ 02 мая 2010

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

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";
2 голосов
/ 03 мая 2010

Это Access, поэтому вам нужны круглые скобки и вам нужно выбрать тип JOIN. ЛЕВЫЙ и ВНУТРЕННИЙ - обычные варианты, поэтому:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...