Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
15 / 8 / 1
Регистрация: 19.07.2012
Сообщений: 70
1

MySql Ado StoredPocedure return @parametr

06.11.2012, 17:16. Показов 3169. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Работаю с mysql через ADO, необходимо вызывать хранимую процедуру которая бы возвращала один параметр. Запросы с помощью ADOQuery1.Connection.Execute выполняются без проблем, не получается вытащить параметр [MENTION=91323]res[/MENTION]. Если делать через ADOQuery1.SQL.ADD то все получается но 10500 записей обрабатываются порядка 5 минут, что нереально долго(ощущение, что происходят разрывы). Как можно заставить работать это или сделать с ADOQuery1.SQL.ADD и ADOQuery1.FieldValues[ [MENTION=91323]res[/MENTION]'] чтобы работало побыстрее. Компонент хранимой процедуры не стал использовать т.к. он показался тут сверх излишним. Заранее спасибо.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
procedure MySQLInit;
begin
  try
    CoInitialize(nil);
    ADOConnection1:=TADOConnection.Create(Nil);
    ADOConnection1.ConnectionString:='Provider=MSDASQL.1;Persist Security Info=False;Mode=Read;Extended Properties="Driver=MySQL ODBC 5.1 Driver;SERVER=127.0.0.1;UID=root;DATABASE=POS;PORT=3306;COLUMN_SIZE_S32=1"';
    ADOConnection1.Provider:='MSDASQL.1';
    ADOConnection1.DefaultDatabase:=POS_DATABASE;
    ADOConnection1.KeepConnection:=true;
//    ADOConnection1.ConnectOptions := coAsyncConnect;
    ADOQuery1:=TADOQuery.Create(Nil);
    //ADOQuery1.Connection.Open;
  with ADOQuery1 do
  begin
    Connection:= ADOConnection1;
    CommandTimeout:= 30;
    CursorLocation:= clUseClient;
  end;
  except
    on e:Exception do
    LogProgrSave(TL_FatalError,[E.Message]);
  end;
end;
 
 
  Qry = "Call FuncName(Param1,Param2,Param3 [MENTION=91323]res[/MENTION]);"
  ADOQuery1.Connection.Execute(Qry);
 { ADOQuery1.SQL.Add(Qry);
    ADOQuery1.Active:=True;
  ADOQuery1.SQL.Clear;}
 
//  ADOQuery1.SQL.Text:='select [MENTION=91323]res[/MENTION];';
  ADOQuery1.Connection.Execute('select [MENTION=91323]res[/MENTION];');
//  ADOQuery1.Active:=True;
//  res:=IntToStr(ADOQuery1.FieldValues[ [MENTION=91323]res[/MENTION]']);
 //   res:=ADOQuery1.Parameters.ParamByName( [MENTION=91323]res[/MENTION]').AsString;
 // res:=ADOQuery1.Parameters.ParamValues[ [MENTION=91323]res[/MENTION]'];
//  ADOQuery1.SQL.Clear;
  except
    on e:Exception do
    writeln(E.Message)
  end;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.11.2012, 17:16
Ответы с готовыми решениями:

Return в mysql есть?
Вообщем есть таблица id(int) task(varchar) time(timestamp) 0 go 872345 ...

ADO+MySQL
У меня база в Access я ее перекинул в MySQL, все нормально кроме boolean в MySQL нет такого типа и...

ADO,MySQL
Какой нужно поставщик выбрать для подключения MySQL? (У меня установлены Oracle и MySQL, Oracle...

BCB6, ADO, MySQL
Здравствуйте! Такая ситуация: BCB6, ADO, MySQL Имеются 2 базы данных с аналогичной структурой...

13
64 / 64 / 10
Регистрация: 19.10.2009
Сообщений: 234
06.11.2012, 17:59 2
Во первых хотелось бы взглянуть на текст процедуры, во вторых совсем не понятно зачем вы снова делаете запрос после выполнения процедуры

просто делайте Adoquery1.sql.add(Qry);
adoquery1.open;

и всё можно читать реультат процедуры в самой процедуре в конце обязательно должна быть строка select @res чтоб она что то вернула

и почему компонет хранимой процедуры вам показался сверх излишним тоже непонятно
1
15 / 8 / 1
Регистрация: 19.07.2012
Сообщений: 70
07.11.2012, 09:17  [ТС] 3
Спасибо. Хорошо, поставил в саму процедуру select @res, а как теперь получить в Делфи то что мы в процедуре выбрали?
0
64 / 64 / 10
Регистрация: 19.10.2009
Сообщений: 234
07.11.2012, 10:20 4
Цитата Сообщение от randomav Посмотреть сообщение
Спасибо. Хорошо, поставил в саму процедуру select @res, а как теперь получить в Делфи то что мы в процедуре выбрали?
например так, после

adoquery1.open;

if adoquery1.active and (adoquery1.RecordCount > 0) then
переменная := adoquery1.Fields[0].Value;
1
15 / 8 / 1
Регистрация: 19.07.2012
Сообщений: 70
07.11.2012, 11:22  [ТС] 5
Delphi
1
2
3
4
5
QryAddGoods:='call  AddGoods('+  defaultVal(goodsParam[HNUM_TYPE])+', '''+ goodsParam[HNUM_NAME]+''','''+goodsParam[HNUM_CODE]+''','''+goodsParam[HNUM_PARENTCODE]+''','''+goodsParam[HNUM_NAMEINCHECK]+''','+  defaultVal(goodsParam[HNUM_BUYPRICE])+','+defaultVal(goodsParam[HNUM_SALEPRICE])+','''+goodsParam[HNUM_EDIZM]+''','+defaultVal(goodsParam[HNUM_ISWEIGHT])+','+LastLoad+','+  defaultVal(goodsParam[HNUM_OSTATOK])+', NULL,'''+MultiplierBarCode+''','''+''+''','+'0'+','''+  defaultVal(goodsParam[HNUM_DISCOUNT])+''','+  defaultVal(goodsParam[HNUM_AFTERDISCOUNTPRICE])+','+  defaultVal(goodsParam[HNUM_COUNTDISCOUNT])+','+  defaultVal(goodsParam[HNUM_POROGPRICE])+','+  defaultVal(goodsParam[HNUM_CRATDISCOUNT])+','+  defaultVal(goodsParam[HNUM_STOPTIME])+','''+ParamBarCode+''',@res);';
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(QryAddGoods);
ADOQuery1.Open;
if adoquery1.active and (adoquery1.RecordCount > 0) then res := adoquery1.Fields[0].Value;
SQL
1
2
3
4
5
BEGIN
/*тут еще куча текста...*/
SET RESULT = 100; 
SELECT RESULT;    
END
В редакторе MySQL выполняю запрос "call AddGoods(1, 'FOOD','0100086','0100081','',0,0,'',0,'0000-00-00 00:00:00',0, NULL,' ','',0,'0',0,0,0,0,0,' ',@res);" возвращает 3 результата 3-й как раз Result = 100.
В Делфи в режиме отладки "adoquery1.RecordCount" = 1 и adoquery1.active=True, но adoquery1.Fields=(). В итоге res тоже пусто.
0
64 / 64 / 10
Регистрация: 19.10.2009
Сообщений: 234
07.11.2012, 13:10 6
Скинь весь текст хранимой процедуры
1
15 / 8 / 1
Регистрация: 19.07.2012
Сообщений: 70
07.11.2012, 13:35  [ТС] 7
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
BEGIN
  DECLARE GetNameGoods VARCHAR(255);
  DECLARE Parent_ID INT(11);
  DECLARE Goods_ID INT(11);
  DECLARE Load_date datetime;
  DECLARE Load_ID INT(8);
  DECLARE Space_Pos INT(3);
  DECLARE Space_Pos2 INT(3);
  DECLARE Shk VARCHAR(30);
  DECLARE Shks VARCHAR(200);
  DECLARE Multiplier VARCHAR(30);
  DECLARE Multipliers VARCHAR(50);
  DECLARE ID_BarCode INT(11);
  
/*  select plastload;*/
  SET @Load_ID=0;
  IF (pLastLoad != "0000-00-00 00:00:00") THEN
  SELECT @Load_date:=LoadDate, @Load_ID:=LoadID FROM CurrentLoad LIMIT 1;
  UPDATE CurrentLoad SET LoadDate=pLastLoad, LoadID=@Load_ID+1;
  END IF;
 
  /*select @Load_ID;*/
  SET @GetNameGoods=NULL;
  SET @Goods_ID=0;
  /*select pID as 'ID=';*/
  
  /*select pProductCode;*/
  SELECT @GetNameGoods:=NameGoods, @Goods_ID:=ID FROM GoodsTable WHERE ProductCode=pProductCode;
 /* select 'IDNOW='+@Goods_ID;*/
  /*select @GetNameGoods;
  SELECT IF(@GetNameGoods is not Null,'уже есть','еще нет');*/
  IF (@GetNameGoods IS NOT NULL) THEN 
  DELETE FROM GoodsTable WHERE ProductCode=pProductCode;
  /*SELECT 'удаляем';*/
  END IF;
  SELECT ID INTO @Parent_ID FROM GoodsTable WHERE ProductCode=pCodeParentGoods LIMIT 1; /*Ищем род. ID по род. коду*/
  IF (@Parent_ID IS NULL) THEN 
  SET @Parent_ID='';
  END IF;
 
  SELECT  @Goods_ID;
 
  IF (@Goods_ID<=0) THEN 
  SELECT  MAX(ID)+1 INTO @Goods_ID FROM GoodsTable; /*Находим максимальный ID у товара*/
  END IF;
 
  IF (@Goods_ID IS NULL) THEN 
  SET @Goods_ID='0';
  END IF;
 
/*  SELECT "ID="+@Goods_ID;*/
  /*select "pdate="+pDate;*/
  INSERT INTO `POS`.`GoodsTable` (`Type`, `NameGoods`, `ID`, `ProductCode`, `ParentID`, `CodeParentGoods`, `NameInCheck`, `BuyPrice`, `SalePrice`, `UnitOfMeasure`, `CountIsWeight`, `LastLoad`, `LastStock`, `LastSale`, `NumberLoad`, `TimeLastSale`, `SalesInDay`, `Date`, `AfterPromotionPrice`, `PromotionCount`, `SumLimit`, `SplitCountPromotion`, `StopTime`)
  VALUES (pType, pNameGoods, @Goods_ID, pProductCode, @Parent_ID, pCodeParentGoods, pNameInCheck, pBuyPrice, pSalePrice, pUnitOfMeasure, pCountIsWeight, pLastLoad, pLastStock, pLastSale, @Load_ID, pTimeLastSale, pSalesInDay, pDate, pAfterPromotionPrice, pPromotionCount, pSumLimit, pSplitCountPromotion, pStopTime);
/* SELECT 'Ok';*/
 /*штрих код*/
 
SET @Shks = pBarCode;
SET @Multipliers = pMultiplier;
 
/*update*/
 
REPEAT
SET @Space_Pos = INSTR(@Shks, ' '); 
SET @Shk=SUBSTRING(@Shks, 1, @Space_Pos-1);
SET @Shks=SUBSTRING(@Shks, @Space_Pos+1, LENGTH(@Shks)-@Space_Pos);
/*select @Shk;*/
SET @Space_Pos2 = INSTR(@Multipliers, ' '); 
SET @Multiplier=SUBSTRING(@Multipliers, 1, @Space_Pos2-1);
SET @Multipliers=SUBSTRING(@Multipliers, @Space_Pos2+1, LENGTH(@Multipliers)-@Space_Pos2);
IF (@Shk != "") THEN
  DELETE FROM BarCodes WHERE BarCode=@Shk;/*Удаляем старые штрихкоды товара*/
  SELECT  @ID_BarCode:=(MAX(IDBarCode)+1) FROM BarCodes; /*Находим максимальный ID у товара*/
  /*select @ID_BarCode;*/
  IF (@ID_BarCode IS NULL) THEN
    SET @ID_BarCode=0;
  END IF;
  INSERT INTO `POS`.`BarCodes` (`IDBarCode`,`IDGoods`,`BarCode`,`Multiplier`)
  VALUES (@ID_BarCode, @Goods_ID, @Shk, @Multiplier);
END IF;
UNTIL @Space_Pos = 0 END REPEAT;
 
 /* select SUBSTRING_INDEX( pBarCode , ',', 1 ); */
SET @p = 1;
SET RESULT = 100; 
SELECT RESULT;    
END
0
64 / 64 / 10
Регистрация: 19.10.2009
Сообщений: 234
07.11.2012, 14:33 8
вообщем убирай промежуточные записи типа select @Goods_ID просто результат выводится на разных вкладках или как это объяснить. вообщем как тут прочитать не первое значение я не в курсе никогда не приходилось, можешь заменить свои выводы на одну строку типа select @val1, @val2, @val3 и т.д. тогда сможешь получить результат всех переменных
1
15 / 8 / 1
Регистрация: 19.07.2012
Сообщений: 70
07.11.2012, 15:03  [ТС] 9
Попробовал еще сделать через StoredProcedure, выдает исключение при запуске "неправильно определен объект Parameter предоставлены несогласованные или неполные сведения"

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
 
procedure MySQLInit;
begin
  try
    CoInitialize(nil);
    ADOConnection1:=TADOConnection.Create(Nil);
    ADOConnection1.ConnectionString:='Provider=MSDASQL.1;Persist Security Info=False;Mode=Read;Extended Properties="Driver=MySQL ODBC 5.1 Driver;SERVER=127.0.0.1;UID=root;DATABASE=POS;PORT=3306;COLUMN_SIZE_S32=1"';
    ADOConnection1.Provider:='MSDASQL.1';
    ADOConnection1.DefaultDatabase:=POS_DATABASE;
    ADOConnection1.KeepConnection:=true;
//    ADOConnection1.ConnectOptions := coAsyncConnect;
    ADOQuery1:=TADOQuery.Create(Nil);
    //ADOQuery1.Connection.Open;
  with ADOQuery1 do
  begin
    Connection:= ADOConnection1;
    CommandTimeout:= 30;
    CursorLocation:= clUseClient;
    SQL.Clear;
  end;
  except
    on e:Exception do
    //show(E.Message)
    LogProgrSave(TL_FatalError,[E.Message]);
  end;
 // AdoStorProc
  ADOStoredProc1:=TADOStoredProc.Create(Nil);
  ADOStoredProc1.Connection:=ADOConnection1;
  ADOStoredProc1.ProcedureName:='AddGoods';
end;
 
 
  ADOStoredProc1.Parameters.Refresh();
  ADOStoredProc1.Parameters.AddParameter;
  ADOStoredProc1.Parameters[0].Value:=defaultVal(goodsParam[HNUM_TYPE]);
  ADOStoredProc1.Parameters.AddParameter;
  ADOStoredProc1.Parameters[1].Value:=''''+ goodsParam[HNUM_NAME]+'''';
  ADOStoredProc1.Parameters.AddParameter;
  ADOStoredProc1.Parameters[2].Value:=''''+goodsParam[HNUM_CODE]+'''';
  ADOStoredProc1.Parameters.AddParameter;
  ADOStoredProc1.Parameters[3].Value:=''''+goodsParam[HNUM_PARENTCODE]+'''';
  ADOStoredProc1.Parameters.AddParameter;
  ADOStoredProc1.Parameters[4].Value:=''+goodsParam[HNUM_NAMEINCHECK]+'''';
  ADOStoredProc1.Parameters.AddParameter;
  ADOStoredProc1.Parameters[5].Value:=defaultVal(goodsParam[HNUM_BUYPRICE]);
  ADOStoredProc1.Parameters.AddParameter;
  ADOStoredProc1.Parameters[6].Value:=defaultVal(goodsParam[HNUM_SALEPRICE]);
  ADOStoredProc1.Parameters.AddParameter;
  ADOStoredProc1.Parameters[7].Value:=''''+goodsParam[HNUM_EDIZM]+'''';
  ADOStoredProc1.Parameters.AddParameter;
  ADOStoredProc1.Parameters[8].Value:=defaultVal(goodsParam[HNUM_ISWEIGHT]);
  ADOStoredProc1.Parameters.AddParameter;
  ADOStoredProc1.Parameters[9].DataType:= ftString;
  ADOStoredProc1.Parameters[9].Value:=LastLoad;
  ADOStoredProc1.Parameters.AddParameter;
  ADOStoredProc1.Parameters[10].Value:=defaultVal(goodsParam[HNUM_OSTATOK]);
  ADOStoredProc1.Parameters.AddParameter;
  ADOStoredProc1.Parameters[11].Attributes:=[paNullable];
//  ADOStoredProc1.Parameters[11].Value:='NULL';
  ADOStoredProc1.Parameters[11].Value:=0;
  ADOStoredProc1.Parameters.AddParameter;
  ADOStoredProc1.Parameters[12].Value:=''''+MultiplierBarCode+'''';
  ADOStoredProc1.Parameters.AddParameter;
  ADOStoredProc1.Parameters[13].Value:='';
  ADOStoredProc1.Parameters.AddParameter;
  ADOStoredProc1.Parameters[14].Value:='0';
  ADOStoredProc1.Parameters.AddParameter;
  ADOStoredProc1.Parameters[15].Value:=''''+defaultVal(goodsParam[HNUM_DISCOUNT])+'''';
  ADOStoredProc1.Parameters.AddParameter;
  ADOStoredProc1.Parameters[16].Value:=defaultVal(goodsParam[HNUM_AFTERDISCOUNTPRICE]);
  ADOStoredProc1.Parameters.AddParameter;
  ADOStoredProc1.Parameters[17].Value:=defaultVal(goodsParam[HNUM_COUNTDISCOUNT]);
  ADOStoredProc1.Parameters.AddParameter;
  ADOStoredProc1.Parameters[18].Value:=defaultVal(goodsParam[HNUM_POROGPRICE]);
  ADOStoredProc1.Parameters.AddParameter;
  ADOStoredProc1.Parameters[19].Value:=defaultVal(goodsParam[HNUM_CRATDISCOUNT]);
  ADOStoredProc1.Parameters.AddParameter;
  ADOStoredProc1.Parameters[20].Value:=defaultVal(goodsParam[HNUM_STOPTIME]);
  ADOStoredProc1.Parameters.AddParameter;
  ADOStoredProc1.Parameters[21].Value:=''''+ParamBarCode+'''';
  with ADOStoredProc1.Parameters.AddParameter do
  begin
   // Value:='res';
    direction := pdOutput;
    DataType:=ftInteger;
    Name:='@res';
    Value:=0;
  end;
  ADOStoredProc1.ExecProc;
0
64 / 64 / 10
Регистрация: 19.10.2009
Сообщений: 234
07.11.2012, 15:48 10
Delphi
1
2
ADOStoredProc1.Parameters.Refresh;
ADOStoredProc1.Parameters.ParamByName('@название параметра').Value := значение;
ADOStoredProc1.Parameters.AddParameter; не нужно

Добавлено через 12 минут
зачем ты всё пытаешься как то усложнить, определись что должна тебе вернуть процедура напиши в самомо конце процедуры
select @val1 as myvalue1, @val2 as myvalue2, @val3 as myvalue3, ...
затем

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  ADOStoredProc1:=TADOStoredProc.Create(Nil);
  try
    ADOStoredProc1.Connection:=ADOConnection1;
    ADOStoredProc1.ProcedureName:='AddGoods';
    try
      ADOStoredProc1.Open;
    except
    end;
    if ADOStoredProc1.Active and (ADOStoredProc1.RecordCount > 0) then
    begin
      a1 := ADOStoredProc1.FieldByName('myvalue1').Value;
      a2 := ADOStoredProc1.FieldByName('myvalue2').Value;
      a3 := ADOStoredProc1.FieldByName('myvalue3').Value;
      ...
    end
  finally
    ADOStoredProc1.Free;
  end;
1
15 / 8 / 1
Регистрация: 19.07.2012
Сообщений: 70
07.11.2012, 16:23  [ТС] 11
Благодарю за терпение. Но пока у меня проблема с входными параметрами, при вызове ADOStoredProc1.Open вылазит исключение "IN or INOUT argument 23 for routine for AddGoods is not variable or New Pseudo-variable in BEFORE triger"

Delphi
1
2
3
4
ADOStoredProc1.Parameters[22].direction:=pdOutput;
ADOStoredProc1.Parameters[22].DataType:=ftInteger;
ADOStoredProc1.Parameters[22].Name:='@res';
ADOStoredProc1.Parameters[22].Value:=0;
0
15 / 8 / 1
Регистрация: 19.07.2012
Сообщений: 70
08.11.2012, 16:52  [ТС] 12
Цитата Сообщение от Larsus Посмотреть сообщение
Delphi
1
2
ADOStoredProc1.Parameters.Refresh;
ADOStoredProc1.Parameters.ParamByName('@название параметра').Value := значение;
ADOStoredProc1.Parameters.AddParameter; не нужно

Добавлено через 12 минут
зачем ты всё пытаешься как то усложнить, определись что должна тебе вернуть процедура напиши в самомо конце процедуры
select @val1 as myvalue1, @val2 as myvalue2, @val3 as myvalue3, ...
затем

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  ADOStoredProc1:=TADOStoredProc.Create(Nil);
  try
    ADOStoredProc1.Connection:=ADOConnection1;
    ADOStoredProc1.ProcedureName:='AddGoods';
    try
      ADOStoredProc1.Open;
    except
    end;
    if ADOStoredProc1.Active and (ADOStoredProc1.RecordCount > 0) then
    begin
      a1 := ADOStoredProc1.FieldByName('myvalue1').Value;
      a2 := ADOStoredProc1.FieldByName('myvalue2').Value;
      a3 := ADOStoredProc1.FieldByName('myvalue3').Value;
      ...
    end
  finally
    ADOStoredProc1.Free;
  end;
Сделал все в точности так, в mysql убрал другие select, теперь только result = 100 в менеджере выдает, однако тут при вызове res := ADOStoredProc1.FieldByName('result').Value.AsString; после Open исключение Field 'result' not found. В чем еще мб причина? Может еще что-то попробовать.
0
15 / 8 / 1
Регистрация: 19.07.2012
Сообщений: 70
15.11.2012, 14:34  [ТС] 13
Спасибо, разобрался!

Сейчас не могу понять почему с русской кодировкой проблемы в базе.
ADOStoredProc1.Parameters[1].Value:= 'Проверка';
В отладчике значение ADOStoredProc1.Parameters[1].Value = ''@>25@:0'" в базе отображается уже как ????????
Пробовал менять в базе кодировку на utf и на ascii.
Что-то можно с этим сделать?
0
15 / 8 / 1
Регистрация: 19.07.2012
Сообщений: 70
19.11.2012, 09:22  [ТС] 14
Решил проблему использованием ODBC Connector версии 3.51.
0
19.11.2012, 09:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.11.2012, 09:22
Помогаю со студенческими работами здесь

Delphi7 - ADO - MySQL
Здравствуйте. Помогите разобраться, как подключить базу данных MySQL к Delphi7 через ADO...

ADO и подключение к MySQL
Всем привет. Кто знает метод подключения компонентов ADO к MySQL, чтобы работало на любом ПК, без...

ADO data driver и mysql
Здравствуйте уважаемые программисты, нужна помощь. Делаю проект на delphi 7 и mysql использую...

Что это isOk(int s),setAge(int g){if(isOk(g){age=g;return true;}else{.;return false;}}.getName(){return name;}?
package com.company; import java.io.Serializable; public class person implements Serializable {...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru