目录
类库:
Npgsql
使用:
string ip = "192.168.1.1";
string port = "5432";
string dbname = "lddb";
string user = "postgres";
string password = "123456";
string schema = "test";
string strSourceConnect = string.Format("Host={0};Username={1};Password={2};Port={3};Database={4};Schema={5};", ip, user, password, port, dbname, schema);
//数据库超时问题Pooling=False;CommandTimeout=50000;
// string strSourceConnect = string.Format("Host={0};Username={1};Password={2};Port={3};Database={4};Pooling=False;CommandTimeout=50000;Schema={5};", CommonClass.PostIP, CommonClass.PostUserName, CommonClass.PostPassword, CommonClass.PostPort, CommonClass.PostDBName, "public");
DataTable dt = PostgresqlGetDataTable(strSourceConnect, "select * from test1");
List<string> lstSQL = new List<string>();
lstSQL.Add("update test2 set field1='1'");
ExecuteSql(strSourceConnect, lstSQL);
执行SQL方法:
public static void ExecuteSql(string sConnectionString, List<string> listExecuteNonQuery)
{
string SchemeName = "";
string ConnectionString = "";
NpgsqlTransaction Transaction = null;
NpgsqlConnection Connection = null;
string strConn = sConnectionString;
try
{
if (strConn.EndsWith(";"))
{
strConn = strConn.Substring(0, strConn.Length - 1);
}
string[] strConns = strConn.Split(';');
strConn = "";
for (int i = 0; i < strConns.Length - 1; i++)
{
strConn = strConn + strConns[i] + ";";
}
ConnectionString = strConn;
SchemeName = strConns[strConns.Length - 1].Split('=')[1];
Connection = new NpgsqlConnection(ConnectionString);
Connection.Open();
if (Connection.State == ConnectionState.Open)
{
string strSetScheme = "set search_path to " + SchemeName;
NpgsqlCommand Command = new NpgsqlCommand(strSetScheme, Connection);
if (Transaction != null)
{
Command.Transaction = Transaction;
}
Command.ExecuteNonQuery();
//执行SQL
//int intNumberIfAffectedRows = 0;
Transaction = Connection.BeginTransaction();//sql语句过多时开启事务
try
{
foreach (string sqlExecuteNonQuery in listExecuteNonQuery)
{
Command = new NpgsqlCommand(sqlExecuteNonQuery, Connection);
if (Transaction != null)
{
Command.Transaction = Transaction;
}
int tt = Command.ExecuteNonQuery();
//if (tt > 0)
//{
// intNumberIfAffectedRows++;
//}
}
//if (intNumberIfAffectedRows == listExecuteNonQuery.Count)
//{
Transaction.Commit();
Transaction = null;
//}
}
catch (System.Exception ex)
{
Console.WriteLine("执行SQL异常:" + ex.Message);
if (Transaction != null)
{
Transaction.Rollback();//异常则回滚事务
}
}
Connection.Close();
if (Connection.State == ConnectionState.Closed)
{
}
}
else
Console.WriteLine("连接失败");
}
catch (System.Exception ex)
{
Console.WriteLine("异常:" + ex.Message);
}
}
获取DataTable方法:
public static void ExecuteSql(string sConnectionString, List<string> listExecuteNonQuery)
{
string SchemeName = "";
string ConnectionString = "";
NpgsqlTransaction Transaction = null;
NpgsqlConnection Connection = null;
string strConn = sConnectionString;
try
{
if (strConn.EndsWith(";"))
{
strConn = strConn.Substring(0, strConn.Length - 1);
}
string[] strConns = strConn.Split(';');
strConn = "";
for (int i = 0; i < strConns.Length - 1; i++)
{
strConn = strConn + strConns[i] + ";";
}
ConnectionString = strConn;
SchemeName = strConns[strConns.Length - 1].Split('=')[1];
Connection = new NpgsqlConnection(ConnectionString);
Connection.Open();
if (Connection.State == ConnectionState.Open)
{
string strSetScheme = "set search_path to " + SchemeName;
NpgsqlCommand Command = new NpgsqlCommand(strSetScheme, Connection);
if (Transaction != null)
{
Command.Transaction = Transaction;
}
Command.ExecuteNonQuery();
//执行SQL
//int intNumberIfAffectedRows = 0;
Transaction = Connection.BeginTransaction();//sql语句过多时开启事务
try
{
foreach (string sqlExecuteNonQuery in listExecuteNonQuery)
{
Command = new NpgsqlCommand(sqlExecuteNonQuery, Connection);
if (Transaction != null)
{
Command.Transaction = Transaction;
}
int tt = Command.ExecuteNonQuery();
//if (tt > 0)
//{
// intNumberIfAffectedRows++;
//}
}
//if (intNumberIfAffectedRows == listExecuteNonQuery.Count)
//{
Transaction.Commit();
Transaction = null;
//}
}
catch (System.Exception ex)
{
Console.WriteLine("执行SQL异常:" + ex.Message);
if (Transaction != null)
{
Transaction.Rollback();//异常则回滚事务
}
}
Connection.Close();
if (Connection.State == ConnectionState.Closed)
{
}
}
else
Console.WriteLine("连接失败");
}
catch (System.Exception ex)
{
Console.WriteLine("异常:" + ex.Message);
}
}