Trouble passing a string as a SQLite ExecSQL command
Posted
by
Hackbrew
on Stack Overflow
See other posts from Stack Overflow
or by Hackbrew
Published on 2014-08-18T16:18:02Z
Indexed on
2014/08/18
16:21 UTC
Read the original article
Hit count: 248
I keep getting the ERROR: near "PassWord": syntax error when trying to execute the ExecSQL() statement. The command looks good in the output of the text file. In fact, I copied & pasted the command directly into SQLite Database Browser and the commend executed properly. Here's the code that's producing the error:
procedure TForm1.Button1Click(Sender: TObject);
var i, iFieldSize: integer;
sFieldName, sFieldType, sFieldList, sExecSQL: String;
names: TStringList;
f1: Textfile;
begin
//Open Source table - Table1 has 8 fields but has only two different field types ftString and Boolean
Table1.TableName:= 'PWFile';
Table1.Open;
//FDConnection1.ExecSQL('drop table PWFile');
sFieldList := '';
names := TStringList.Create;
for i := 0 to Table1.FieldCount - 1 do
begin
sFieldName := Table1.FieldDefList.FieldDefs[i].Name;
sFieldType := GetEnumName(TypeInfo(TFieldType),ord(Table1.FieldDefList.FieldDefs[i].DataType));
iFieldSize := Table1.FieldDefList.FieldDefs[i].Size;
if sFieldType = 'ftString' then sFieldType := 'NVARCHAR' + '(' + IntToStr(iFieldSize) + ')';
if sFieldType = 'ftBoolean' then sFieldType := 'INTEGER';
names.Add(sFieldName + ' ' + sFieldType);
if sFieldList = '' then sFieldList := sFieldName + ' ' + sFieldType
else sFieldList := sFieldList + ', ' + sFieldName + ' ' + sFieldType;
end;
ListBox1.Items.Add(sFieldList);
sExecSQL := 'create table IF NOT EXISTS PWFile (' + sFieldList + ')';
// 08/18/2014 - Entered this to log the SQLite FDConnection1.ExecSQL Command to a file
AssignFile(f1, 'C:\Users\Test User\Documents\SQLite_Command.txt');
Rewrite(f1);
Writeln(f1, sExecSQL);
{ insert code here that would require a Flush before closing the file }
Flush(f1); { ensures that the text was actually written to file }
CloseFile(f1);
FDConnection1.ExecSQL(sFieldList);
Table1.Close;
end;
Here's the actual command that gets executed: create table IF NOT EXISTS PWFile (PassWord NVARCHAR(10), PassName NVARCHAR(10), Dept NVARCHAR(10), Active NVARCHAR(1), Admin INTEGER, Shred INTEGER, Reports INTEGER, Maintain INTEGER)
© Stack Overflow or respective owner