![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как (чем) ввести данные в unicode в таблицу Oracle ?
Игорь Шевченко © (2005-06-01 15:38:00)Имеется база данных Oracle, с типом полей NVARCHAR2(x), хотелось бы заполнить ее данными, в идеальном случае значение поля в каждой записи на своем языке (русский, английский, польский, китайский и т.д.).
Столкнулся с проблемой - SQL*Plus юникода не понимает, пытается перевести в ANSI, бесплатные компоненты для доступа к Oracle из скачанных на torry.net тоже не упоминают в своих readme поддержку unicode.
Кто-нибудь может посоветовать какое-нибудь бесплатноесредство или программное решение ?
Заранее благодарен.
Игорь Шевченко (2005-06-02 14:58:00) [1]Всем спасибо, особенно sniknik © (01.06.05 15:52) [3]
Все получилось.
unit main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, ADODB, StdCtrls, Mask, DBCtrls, TntDbCtrls, Grids, DBGrids,
TntDBGrids, ExtCtrls, ComCtrls, TntComCtrls;
type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
ADOTable1: TADOTable;
DataSource1: TDataSource;
TntDBGrid1: TTntDBGrid;
TntDBEdit1: TTntDBEdit;
TntDBEdit2: TTntDBEdit;
DBNavigator1: TDBNavigator;
ADOTable1W: TWideStringField;
ADOTable1A: TWideStringField;
ADOTable1LONGDATAW: TWideStringField;
ADOTable1LONGDATAA: TWideStringField;
TntDBRichEdit1: TTntDBRichEdit;
TntDBRichEdit2: TTntDBRichEdit;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
end.
object Form1: TForm1
Left = 192
Top = 107
Width = 544
Height = 454
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object TntDBGrid1: TTntDBGrid
Left = 12
Top = 184
Width = 517
Height = 240
Anchors = [akLeft, akTop, akRight, akBottom]
DataSource = DataSource1
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
TabOrder = 0
TitleFont.Charset = DEFAULT_CHARSET
TitleFont.Color = clWindowText
TitleFont.Height = -11
TitleFont.Name = 'MS Sans Serif'
TitleFont.Style = []
end
object TntDBEdit1: TTntDBEdit
Left = 12
Top = 40
Width = 517
Height = 21
Anchors = [akLeft, akTop, akRight]
DataField = 'W'
DataSource = DataSource1
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
TabOrder = 1
end
object TntDBEdit2: TTntDBEdit
Left = 12
Top = 72
Width = 517
Height = 21
Anchors = [akLeft, akTop, akRight]
DataField = 'A'
DataSource = DataSource1
TabOrder = 2
end
object DBNavigator1: TDBNavigator
Left = 12
Top = 8
Width = 240
Height = 25
DataSource = DataSource1
TabOrder = 3
end
object TntDBRichEdit1: TTntDBRichEdit
Left = 12
Top = 104
Width = 229
Height = 69
DataField = 'LONGDATAW'
DataSource = DataSource1
TabOrder = 4
end
object TntDBRichEdit2: TTntDBRichEdit
Left = 252
Top = 104
Width = 277
Height = 69
DataField = 'LONGDATAA'
DataSource = DataSource1
TabOrder = 5
end
object ADOConnection1: TADOConnection
Connected = True
ConnectionString =
'Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=H' +
'S_SIW;Data Source=orc7;Extended Properties=""'
Provider = 'OraOLEDB.Oracle.1'
Left = 16
Top = 16
end
object ADOTable1: TADOTable
Active = True
Connection = ADOConnection1
CursorType = ctStatic
TableName = 'UNICODE_DATA'
Left = 16
Top = 52
object ADOTable1W: TWideStringField
FieldName = 'W'
Size = 40
end
object ADOTable1A: TWideStringField
FieldName = 'A'
Size = 40
end
object ADOTable1LONGDATAW: TWideStringField
DisplayWidth = 20
FieldName = 'LONGDATAW'
Size = 2000
end
object ADOTable1LONGDATAA: TWideStringField
DisplayWidth = 20
FieldName = 'LONGDATAA'
Size = 4000
end
end
object DataSource1: TDataSource
DataSet = ADOTable1
Left = 16
Top = 88
end
end
Табличка тоже простая:
create table unicode_data (
W NVARCHAR2(40) not null primary key,
A VARCHAR2(40) not null,
LONGDATAW NVARCHAR2(2000),
LONGDATAA VARCHAR2(4000))
/
evvcom (2005-06-02 14:40:00) [2]2ANB: У меня ODAC Net Edition 4.10 for Delphi7 только сейчас обратил внимание, что Net Edition. Инсталляха без сырцов. Если не трудно намыль мне исходники. А версия у тебя какая?
ANB (2005-06-02 12:30:00) [3]Ну дык, а как его еще ставить ? Можа правда не все, но он перебилдивается. Я на вскидку проверил, вроде ко всем дцу есть пасники и дфмки.
evvcom (2005-06-02 11:53:00) [4]
> - обижаешь, откуда у меня dcu ломаная то, если я все сам
> компилил из исходников.
У тебя есть исходники ODAC?
Игорь Шевченко (2005-06-02 10:41:00) [5]ANB © (02.06.05 10:23) [25]
> - это легальный способ ?
Для этого ничего дополнительного покупать не требуется :)
> У меня казанские кореша вообще на прямую работу с OCI перешли,
> намного удобнее, грят.
Вообще-то у нас есть самостоятельно написанный неплохой набор компонент для работы через oci, но, на данном этапе, только с ANSI. Разумеется, он будет доделываться для поддержки unicode, собственно, мое желание заполнить таблицу строками разных языков служит частично и этой цели.
ANB (2005-06-02 10:23:00) [6]
> на чистой системе через ADO
- это легальный способ ? У меня казанские кореша вообще на прямую работу с OCI перешли, намного удобнее, грят.
Игорь Шевченко (2005-06-02 09:57:00) [7]ANB © (02.06.05 09:16) [21]
> - тебе слать или не надо ?
Спасибо.
Я все-таки сначала попробую легальными способами, на чистой системе через ADO.
Если не получится, тогда попрошу, ок ?
ANB (2005-06-02 09:27:00) [8]
> Значит dcu уже ломаная :)
- обижаешь, откуда у меня dcu ломаная то, если я все сам компилил из исходников.
evvcom (2005-06-02 09:25:00) [9]
> Запускается на всех компах в конторе.
Значит dcu уже ломаная :)
ANB (2005-06-02 09:16:00) [10]
> Игорь Шевченко © (01.06.05 22:00) [17]
- тебе слать или не надо ?
Есть :
- одак 5.10 под делфи с 5 по 8 и билдер 5 и 6
- доа 4.04 под делфи 7
все с исходниками
ANB (2005-06-02 09:08:00) [11]
> Reindeer Moss Eater © (01.06.05 19:05) [14]
Посмотри мой пост 13 - не работает такой способ. У меня оракл 8, одак - 5.
ANB (2005-06-02 09:08:00) [12]Запускается на всех компах в конторе. Делфа стоит далеко не у всех. Вот DOA без ключа не работает. Но у меня ключ есть :)))
evvcom (2005-06-02 08:59:00) [13]
> Одак и доа я не покупал, ставяться без ключа
DOA не юзал, а насчет ODAC... Да, ставится без ключа. Только попробуй сделать так: скомпиль exe, выгрузи Delphi, запусти скомпиленный exe. О результатах сообщи.
Игорь Шевченко (2005-06-01 22:00:00) [14]Завтра буду ставить на чистую систему клиента Oracle, Delphi и прочее. Сейчас у меня два клиента в одной системе, сдается мне, что путаница в них происходит. С ADO и TntControls получается любопытная ситуация, в design-time я вижу содержимое таблицы в Unicode (связка ADOConnection+ADOTable+DataSource+TntDBGrid), а при запуске приложения кодировка меняется непонятным образом и того, что я видел в design-time, я увидеть никак не могу. DLL-и клиента Oracle подгружаются вперемешку, OLE DB-Provider из 8-го клиента, oci из 9-го, а в среде несколько другой состав DLL. Мне лень искать причину, проще произвести эксперимент на чистой системе.
ЗЫ: Платных компонентов я не хочу.
ЗЗЫ: ADO я практически не знаю, просьба ногами сильно не пинать :)
Fay (2005-06-01 20:21:00) [15]Игорь Шевченко © (01.06.05 15:38)
М.б. тебе DOA дать? 8)
Shaman_Naydak (2005-06-01 19:58:00) [16]ODAC поддерживает WideString с версии 4.50, если не ошибаюсь
Reindeer Moss Eater (2005-06-01 19:05:00) [17]Вот и я засовываю в поле нужное мне значение и не мучаюсь.
ANB (2005-06-01 17:34:00) [18]Хм, нашел qrSQL.ParamByName('F1').AsWideString, запихал туда WideString строку. Ошибка та же.
ANB (2005-06-01 17:32:00) [19]Засовываю в параметр нужное значение и не мучаюсь
Reindeer Moss Eater (2005-06-01 17:07:00) [20]А как ты заставляешь его "есть" ну скажем Double или Integer или Varchar2?