May 02, 2017
On 05/02/2017 04:02 AM, Suliman wrote:
>
> I need co concatenate string with variant type (I am doing SQL query).
>
> What is the best way to put it? It's seems that if I am doing simple
> `replace`
>
> string sql = "..."
> sql.replace(`37.72308`, to!string(cargpspoint.lon)).replace(`55.47957`,
> to!string(cargpspoint.lat))
>
> I am loosing accuracy. Is there any better way?

Building SQL strings manually isn't really good practice these days, for both that and other reasons. It's better to use prepared statements, which will fix that issue for you and will also ensure your code is not susceptible to SQL-injection attacks:


// Raw SQL strings (old, ugly, unsafe way):
auto name = "Fred";
auto num = 1.23;
auto sql = text(
  "INSERT INTO `myTable` (`field1`, `field2`) VALUES ('",
  mysqlEscape(name), "', ", num, ")"
);
exec(conn, sql);


// Prepared statement (good, modern, safe way):
auto name = "Fred";
auto num = 1.23;
Prepared insertSomeFields = prepare(conn,
  "INSERT INTO `myTable` (`field1`, `field2`) VALUES (?, ?)"
);
insertSomeFields.setArgs(name, num);
insertSomeFields.exec();


1 2
Next ›   Last »