Как достать текст из БД SQL и поместить в memo

152
15 июля 2018, 11:20

Имеется таблица БД с двумя столбами id_textb и textb. Как будет выглядить SQL запрос для вывода текста из столба "textb" и помещение его в memo1.

Answer 1

С помощью SQL запроса можно только лишь получить какой-то набор данных. К примеру, запрос вида

SELECT `textb` FROM `table_name` WHERE id_textb = 1

вернет, грубо говоря, значение поля textb. Это первая часть. Дальше, Вам требуется это поместить в Memo. Для этого, вам можно сделать что-то подобное:

Memo1.Text := textBStr;

где textBStr это текстовая переменная, куда поместили значение, полученное из запроса. Как все это связать. Вам нужно рассмотреть компоненты для работы с БД, ранее (Delphi 7) это были TADOConnection, TADODataSet, TADOTable, TDataSource, TADOQuery и с ними уже работать.

Пример работы с ADO:

procedure TForm2.FormCreate(Sender: TObject);
const
  { Connection string }
  ConnString =
  'Provider=SQLOLEDB.1;Persist Security Info=False;' +
  'User ID=%s;Password=%s;Data Source=%s;Use Procedure for Prepare=1;' +
  'Auto Translate=True;Packet Size=4096;Use Encryption for Data=False;'+
  'Tag with column collation when possible=False';
  { SQL Query }
  SQLStr = 'SELECT * FROM customer WHERE customer_id = :AnId;';
  { User access }
  UserName = 'db_user_name';
  PassWord = 'db_pass_word';
  Server = 'my.db.server';
var
  ADOConn  : TADOConnection;
  ADOQuery : TADOQuery;
  DataSrc  : TDataSource;
  Param    : TParameter;
begin
  { Create an ADO connection }
  ADOConn := TADOConnection.Create(Self);
  { Setup the provider engine }
  { Setup the connection string }
  ADOConn.ConnectionString := Format(ConnString,
    [UserName, PassWord, Server]);
  { Disable login prompt }
  ADOConn.LoginPrompt := False;
  try
    ADOConn.Connected := True;
  except
    on e: EADOError do
    begin
      MessageDlg('Error while connecting', mtError,
                  [mbOK], 0);
      Exit;
    end;
  end;
  { Create the query }
  ADOQuery := TADOQuery.Create(Self);
  ADOQuery.Connection := ADOConn;
  ADOQuery.SQL.Add(SQLStr);
  { Update the parameter that was parsed from the SQL query: AnId }
  Param := ADOQuery.Parameters.ParamByName('AnId');
  Param.DataType := ftInteger;
  Param.Value := 1;
  { Set the query to Prepared - will improve performance }
  ADOQuery.Prepared := true;
  try
    ADOQuery.Active := True;
  except
    on e: EADOError do
    begin
      MessageDlg('Error while doing query', mtError,
                  [mbOK], 0);
      Exit;
    end;
  end;
  { Create the data source }
  DataSrc := TDataSource.Create(Self);
  DataSrc.DataSet := ADOQuery;
  DataSrc.Enabled := true;
  { Finally initilalize the grid }
  DBGrid1.DataSource := DataSrc;
end;

Подробно можно посмотреть вот тут - http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/ADODB_TADOConnection.html

Answer 2

Вот рабочий код, кому нужно ловите

Form24.SQLQuery1.Close;
Form24.SQLQuery1.SQL.Clear;
Form24.SQLQuery1.SQL.Add('SELECT textb from name_textb WHERE id_textb = 1');
Form24.SQLQuery1.Open;
Memo1.Lines.add(Form24.SQLQuery1.Fieldbyname('textb').AsString);
Form24.SQLQuery1.Next;
READ ALSO
Почему post становится get?

Почему post становится get?

Пишу отправку сообщений на Django сервере и столкнулся с такой проблемой: при нажатии на input типа submit в форме типа post происходит передача методом...

174
Как сделать сборку webpack для frontend?

Как сделать сборку webpack для frontend?

Разбираюсь с webpack, столкнулся с ошибкой

167
< и символ < одно и тоже в HTML или нет?

&lt; и символ < одно и тоже в HTML или нет?

Могу ли я вместо, например, открывающего тега < писать &lt; ? И как браузер будет это интерпретировать?

167