Ejemplo n.º 1
0
        public static void bind_param_array(this mysqli_stmt that, string types, params object[] e)
        {
            var a = new List <object>();

            a.Add(types);

            for (int i = 0; i < e.Length; i++)
            {
                var k = e[i];

                //Console.WriteLine("will call bind_param " + new { i, k });

                a.Add(k);
            }

            var aa = a.ToArray();

            //Console.WriteLine("will call bind_param " + new { aa.Length });

            __bind_param(that, aa);
        }
Ejemplo n.º 2
0
        private void InternalCreateStatement()
        {
            if (this.InternalParameters.InternalParameters.Count > 0)
            {
                var sql = this.CommandText;


                var parameters = this.InternalParameters.InternalParameters;

                //Console.WriteLine("we have InternalParameters for " + new { parameters.Count });


                var index = Enumerable.ToArray(
                   from p in parameters.AsEnumerable()
                   from i in this.CommandText.GetIndecies(p.ParameterName)
                   orderby i
                   select new { p, i }
                );

                //Console.WriteLine("we have InternalParameters for index: " + new { index.Length });


                foreach (var p in parameters)
                {
                    // java seems to like indexed parameters instead
                    sql = sql.Replace(p.ParameterName, "?");
                }

                this.InternalPreparedStatement = this.c.InternalConnection.prepare(sql) as mysqli_stmt;

                var types = "";
                var values = new List<object>();

                var c = 0;
                foreach (var item in index)
                {
                    c++;

                    // what about blobs?

                    if (item.p.Value is int)
                    {
                        types += "i";
                        values.Add(item.p.Value);
                    }
                    else if (item.p.Value is double)
                    {
                        types += "d";
                        values.Add(item.p.Value);
                    }
                    else
                    {
                        types += "s";
                        values.Add(item.p.Value);
                    }


                }

                var args = values.ToArray();

                //Console.WriteLine("we have InternalParameters for " + new { sql, types, args = Native.DumpToString(args) });


                this.InternalPreparedStatement.bind_param_array(types, args);

                // add values
            }
        }
Ejemplo n.º 3
0
 public static object[] __fetch_array(this mysqli_stmt stmt)
 {
     return(null);
 }