An alternative to UBB.threads
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
FLocal/MySQLConnector/PostgresDBTraits.cs

44 lines
1.2 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Common;
using Npgsql;
using FLocal.Core.DB;
namespace FLocal.MySQLConnector {
public class PostgresDBTraits : IDBTraits {
public static readonly PostgresDBTraits instance = new PostgresDBTraits();
public DbConnection createConnection(string connectionString) {
return new Npgsql.NpgsqlConnection(connectionString);
}
public long LastInsertId(DbCommand command, ITableSpec table) {
string sequenceName = table.name + "_" + table.idName + "_seq";
using(DbCommand newCommand = command.Connection.CreateCommand()) {
if(command.Transaction != null) {
newCommand.Transaction = command.Transaction;
}
newCommand.CommandType = System.Data.CommandType.Text;
newCommand.CommandText = "SELECT CURRVAL('" + this.escapeIdentifier(sequenceName) + "')";
return (long)newCommand.ExecuteScalar();
}
}
public string escapeIdentifier(string identifier) {
return "\"" + identifier.Replace("\"", "") + "\"";
}
public string markParam(string param) {
return ":" + param;
}
public bool supportsIsolationLevel() {
return true;
}
}
}