示例#1
0
 private static int AddConnection(genericConnection sqlConn)
 {
     lock (allConn)
     {
         nConn         += 1;
         totConn       += 1;
         allConn[nConn] = sqlConn;
         return(nConn);
     }
 }
示例#2
0
        async Task <object> openConnection(string connectionString, string driver)
        {
            genericConnection gen = dispatchConn(connectionString, driver);

            try
            {
                await gen.open();

                return(AddConnection(gen));
            }
            catch
            {
                throw new Exception("Error opening connection");
            }
        }
示例#3
0
        public Func <object, Task <object> > CompileFunc(IDictionary <string, object> parameters)
        {
            string connectionString = Environment.GetEnvironmentVariable("EDGE_SQL_CONNECTION_STRING");
            object tmp;

            if (parameters.TryGetValue("connectionString", out tmp))
            {
                connectionString = (string)tmp;
            }
            int handler = -1;

            if (parameters.TryGetValue("handler", out tmp))
            {
                handler = (int)tmp;
            }
            int timeOut = 30;

            if (parameters.TryGetValue("timeout", out tmp))
            {
                timeOut = (int)tmp;
            }

            Func <object, Task <object> > callback = null;

            tmp = null;
            if (parameters.TryGetValue("callback", out tmp))
            {
                callback = (Func <object, Task <object> >)tmp;
            }
            string driver = "sqlServer";

            tmp = null;
            if (parameters.TryGetValue("driver", out tmp))
            {
                driver = (string)tmp;
            }

            string command = "";

            if (parameters.TryGetValue("source", out tmp))
            {
                command = tmp.ToString().TrimStart();
            }

            tmp = null;
            if (parameters.TryGetValue("cmd", out tmp))
            {
                var cmd = ((string)tmp).ToLower().Trim();
                if (cmd == "open")
                {
                    return(async(o) => {
                        return await openConnection(connectionString, driver);
                    });
                }
                if (cmd == "close")
                {
                    closeConnection(handler);
                    return((o) => {
                        return Task.FromResult((object)null);
                    });
                }
                if (cmd == "nonquery")
                {
                    if (handler >= 0)
                    {
                        genericConnection conn = allConn[handler];
                        return(async(o) => {
                            return await conn.executeNonQueryConn(command, timeOut);
                        });
                    }
                    else
                    {
                        genericConnection conn = dispatchConn(connectionString, driver);
                        return(async(o) => {
                            return await conn.executeNonQuery(command, timeOut);
                        });
                    }
                }
            }

            int    packetSize = 0;
            object defPSize   = 0;

            if (parameters.TryGetValue("packetSize", out defPSize))
            {
                packetSize = Convert.ToInt32(defPSize);
            }
            if (handler != -1)
            {
                genericConnection conn = allConn[handler];
                return(async(o) => {
                    return await conn.executeQueryConn(command, packetSize, timeOut, callback);
                });
            }

            return(async(queryParameters) => {
                genericConnection conn = dispatchConn(connectionString, driver);
                return await conn.executeQuery(command, (IDictionary <string, object>) queryParameters,
                                               packetSize, timeOut, callback);
            });
        }