MySql помогите разобраться с выборкой данных

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Ametist
20
Ametist  

Пытаюсь сделать выборку.


#import "libmysql.dll"
int mysql_init(int db);
int mysql_errno(int TMYSQL);
int mysql_real_connect(int TMYSQL, string host, string user, string password,
string DB,int port,int socket,int clientflag);
int mysql_real_query(int TMSQL, string query, int length);
void mysql_close(int TMSQL);
#import
int mysql;

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init(){
mysql = mysql_init(mysql);
if(mysql != 0)
Print("allocated");
string host = "localhost";
string user = "root";
string password = "";
string DB = "database";
int clientflag = 0;
int port = 3306;
string socket = "";
int res = mysql_real_connect(mysql,host,user,password,DB,port,socket,clientflag);
int err = GetLastError();
if(res == mysql)
Print("connected");
else
Print("error=", mysql, " ", mysql_errno(mysql), " ");
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
mysql_close(mysql);
//----
return(0);
}

//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start(){

string query = "";
int length = 0;
query = "SELECT * FROM `orders`";
length = StringLen(query);

mysql_real_query(mysql, query, length);

int myerr = mysql_errno(mysql);
if(myerr > 0){
Print("error=",myerr);
}else{
Print("error=0");
}
return(0);
}


первый запрос проходит без ошибок . потом выдает 2014 ошибку

  • Error: 2014 ( CR_COMMANDS_OUT_OF_SYNC )

    Message: Commands out of sync; you can't run this command now

Что с этим делать и как в конце концов достучаться до того что я выбрал?
Andy
483
Andy  
http://lists.mysql.com/bugs/118
Ametist
20
Ametist  

Я немогу разобраться как добраться до данных... Вот в чем проблема. Ошибка 2014 решена, таким способом

while(mysql_fetch_row(res) != ""){
// чет делаем
}


а как одратиться к определенному полю в таблице?

Andy
483
Andy  

1. Если вышеприведённый код - в эксперте, желательно открывать доступ к базе и саму базу непосредственно перед запросом, затем её закрыть.

2. Если мы хотим получить от базы mysql_fetch_row:

$row = mysql_fetch_row(mysql_query("SELECT * FROM table WHERE a='b' ")); где a - колонка в таблице.

в PHP, $row будет массивом.

Ametist
20
Ametist  
Andy_Kon писал (а) >>

1. Если вышеприведённый код - в эксперте, желательно открывать доступ к базе и саму базу непосредственно перед запросом, затем её закрыть.

2. Если мы хотим получить от базы mysql_fetch_row:

$row = mysql_fetch_row(mysql_query("SELECT * FROM table WHERE a='b' ")); где a - колонка в таблице.

в PHP, $row будет массивом.


Это все да.... про PHP я знаю... так как сам ПХП-шник.... Но дело в том что что когда используешь "C" интерфейс с libmysql.dll - и делаешь выборку хотяб одной записи из MySql, результат возвращаеться в виде "Структуры данных". В "С" Добраться до результатов можно через такую конструкцию ...

...

string result = mysql_fetch_row(mysql_real_query("SELECT * FROM `table` WHERE `id` = 1"));

int id = result->id;

... // гдето так, код может быть не точным... писал по памяти.

MQL4 - не позволяет ТАК обращаться к данным. Вот тут то и проблема... Единственный выход который я вижу, это писать свою DLL которая бы возвращала значения в типе Array а не Структуру.

toxa
71
toxa  

Доброго времени суток, господа,

У меня такой вопрос: MySQL ограничивает максимальное чисто столбцов в таблице, если быть точнее, то максимальное возможное количество столбцов 1000, кто-нибудь знает, как это ограничение можно снять и можно ли вообще? Если нет, то какая БД позволяет создавать таблицы с более чем 3000 столбцов?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий