Пример #1
0
 /// <summary>
 /// 加载连接池配置
 /// 创建数据库连接池
 /// </summary>
 /// <param name="name">配置文件名称</param>
 /// <returns></returns>
 private IDbConnection CreatePool(string name)
 {
     //只是在加载配置文件时同步;其它不同步
     lock (lock_obj)
     {
         HikariDataSource hikari = null;
         if (dicSource.TryGetValue(name, out hikari))
         {
             //先取一次
             return(hikari.GetConnection());
         }
         else
         {
             //配置文件
             string file = Path.Combine(cfgPath, name + CfgExtension);
             if (!File.Exists(file))
             {
                 throw new Exception("没有配置文件" + file);
             }
             HikariConfig hikariConfig = new HikariConfig();
             hikariConfig.DriverDir = null;//不再使用原来的默认
             hikariConfig.LoadConfig(file);
             if (string.IsNullOrEmpty(hikariConfig.DriverDir))
             {
                 //说明没有在文件中配置
                 hikariConfig.DriverDir = this.DirverDir;
             }
             hikariConfig.DBTypeXml = this.PoolDriverXML;
             hikari          = new HikariDataSource(hikariConfig);
             dicSource[name] = hikari;
             return(hikari.GetConnection());
         }
     }
 }
Пример #2
0
        private static void TestConnect()
        {
            HikariConfig hikariConfig = new HikariConfig();

            hikariConfig.DBType        = "PostgreSQL";
            hikariConfig.ConnectString = "Server = 127.0.0.1; Port = 5432; User Id = postgres; Password = 1234; Database = postgres;Pooling=true; ";
            //hikariConfig.DriverDir = "DBDrivers";
            //hikariConfig.DriverDLL = "XXXX.dll";
            //hikariConfig.DBTypeXml = "DBType.xml";
            HikariDataSource hikariDataSource = new HikariDataSource(hikariConfig);
            //
            //hikariConfig.LoadConfig("Hikari.txt");
            // hikariDataSource.LoadConfig();

            //

            //HikariDataSource hikariDataSource = new HikariDataSource();
            //hikariDataSource.LoadConfig("Hikari.txt");
            //hikariDataSource.DBType = "PostgreSQL";
            //hikariDataSource.ConnectString = "Server = 127.0.0.1; Port = 5432; User Id = postgres; Password = 1234; Database = postgres;Pooling=true; ";
            //hikariDataSource.DriverDir = "DBDrivers";
            //hikariDataSource.DriverDLL = "XXXX.dll";
            //hikariDataSource.DBTypeXml = "DBType.xml";
            int num = 1000;

            Task[]   tasks = new Task[num];
            DateTime start = DateTime.Now;

            for (int i = 0; i < num; i++)
            {
                tasks[i] = Task.Factory.StartNew(() =>
                {
                    var connection = hikariDataSource.GetConnection();
                    if (connection != null)
                    {
                        var cmd         = connection.CreateCommand();
                        cmd.CommandText = "select * from student";
                        var rd          = cmd.ExecuteReader();
                        int datanum     = 0;
                        string data     = "";
                        while (rd.Read())
                        {
                            data += "ID:" + rd.GetInt32(0);
                            data += ",Name:" + rd.GetString(1);
                            Console.WriteLine(data);
                            datanum++;
                        }
                        rd.Close();
                        cmd.Dispose();
                        connection.Close();
                        Console.WriteLine(datanum);
                    }
                });
            }
            Task.WaitAll(tasks);
            Console.WriteLine("时间:" + (DateTime.Now - start).TotalSeconds);
        }
Пример #3
0
        private static void TestQuery()
        {
            string sql = "select * from  person where id=@ID";
            Dictionary <string, object> dic = new Dictionary <string, object>();

            dic["ID"] = 1;
            HikariConfig hikariConfig = new HikariConfig();

            hikariConfig.DBType        = "PostgreSQL";
            hikariConfig.ConnectString = "Server = 127.0.0.1; Port = 5432; User Id = postgres; Password = 1234; Database = postgres;Pooling=true; ";
            HikariDataSource hikariDataSource = new HikariDataSource(hikariConfig);
            var ds = hikariDataSource.ExecuteQuery(sql, dic);
        }
Пример #4
0
 /// <summary>
 /// 加载连接池配置
 /// </summary>
 /// <param name="name"></param>
 /// <returns></returns>
 private IDbConnection CreatePool(string name)
 {
     lock (lock_obj)
     {
         HikariDataSource hikari = null;
         if (dicSource.TryGetValue(name, out hikari))
         {
             return(hikari.GetConnection());
         }
         else
         {
             string file = Path.Combine(cfgPath, name + ".cfg");
             if (!File.Exists(file))
             {
                 throw new Exception("没有配置文件" + file);
             }
             HikariConfig hikariConfig = new HikariConfig();
             hikariConfig.LoadConfig(file);
             hikari          = new HikariDataSource(hikariConfig);
             dicSource[name] = hikari;
             return(hikari.GetConnection());
         }
     }
 }
Пример #5
0
        //private static void TestBag()
        //{

        //    ConcurrentList<PoolEntry> connectionList = new ConcurrentList<PoolEntry>();
        //    int num = 100;
        //    Task[] tasks = new Task[num];
        //    Task[] read = new Task[num];
        //    DateTime start = DateTime.Now;
        //    //写入
        //    for (int i=0;i<num;i++)
        //    {
        //      var r= Task.Factory.StartNew(() => {
        //            for (int j = 0; j < 10000; j++)
        //            {
        //                PoolEntry poolEntry = new PoolEntry(null, null);
        //                connectionList.Push(poolEntry);
        //            }
        //        });
        //        tasks[i] = r;
        //    }

        //    //读取
        //    for (int i = 0; i < num; i++)
        //    {
        //        var r = Task.Factory.StartNew(() =>
        //        {
        //            PoolEntry poolEntry = null;
        //            while (!connectionList.IsEmpty)
        //            {
        //                connectionList.TryPop(out poolEntry);
        //            }
        //        });
        //        read[i] = r;
        //    }
        //    Task.WaitAll(read);
        //    Task.WaitAll(tasks);

        //    Console.WriteLine("时间:" + (DateTime.Now - start).TotalSeconds);

        //}

        private static void TestConnect()
        {
            HikariConfig hikariConfig = new HikariConfig();

            hikariConfig.DBType        = "PostgreSQL";
            hikariConfig.ConnectString = "Server = 127.0.0.1; Port = 5432; User Id = postgres; Password = 1234; Database = postgres;Pooling=true; ";
            //hikariConfig.DriverDir = "DBDrivers";
            //hikariConfig.DriverDLL = "XXXX.dll";
            //hikariConfig.DBTypeXml = "DBType.xml";
            HikariDataSource hikariDataSource = new HikariDataSource(hikariConfig);
            //
            //hikariConfig.LoadConfig("Hikari.txt");
            // hikariDataSource.LoadConfig();

            //


            //
            var connection1 = hikariDataSource.GetConnection();

            // var bulk= hikariDataSource.GetBulkCopy();
            //DataTable dt = new DataTable();
            //dt.TableName = "\"Student\"";
            //bulk.BulkCopy(dt);
            if (connection1 != null)
            {
                var cmd = connection1.CreateCommand();
                cmd.CommandText = "select * from \"Person\"";
                //  cmd.CommandText = "COPY \"Student\" FROM 'd:/test.csv'  WITH CSV  HEADER";
                //  cmd.ExecuteNonQuery();

                var rd = cmd.ExecuteReader();
                //int datanum = 0;
                //string data = "";
                //while (rd.Read())
                //{
                //    data += "ID:" + rd.GetInt32(0);
                //    data += ",Name:" + rd.GetString(1);
                //    Console.WriteLine(data);
                //    datanum++;
                //}
                rd.Close();
                //  cmd.Dispose();
                //  connection1.Close();
                // Console.WriteLine(datanum);
            }
            //
            //    int num = 1000;
            //Task[] tasks = new Task[num];
            //DateTime start = DateTime.Now;
            //for (int i = 0; i < num; i++)
            //{
            //    tasks[i] = Task.Factory.StartNew(() =>
            //    {
            //        var connection = hikariDataSource.GetConnection();
            //        if (connection != null)
            //        {
            //            var cmd = connection.CreateCommand();
            //            cmd.CommandText = "select * from student";
            //            var rd = cmd.ExecuteReader();
            //            int datanum = 0;
            //            string data = "";
            //            while (rd.Read())
            //            {
            //                data+="ID:"+rd.GetInt32(0);
            //                data+=",Name:"+ rd.GetString(1);
            //                Console.WriteLine(data);
            //                datanum++;
            //            }
            //            rd.Close();
            //            cmd.Dispose();
            //            connection.Close();
            //            Console.WriteLine(datanum);
            //        }

            //    });

            //}
            //Task.WaitAll(tasks);
            //Console.WriteLine("时间:" + (DateTime.Now - start).TotalSeconds);
        }