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); }
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 } }
public static object[] __fetch_array(this mysqli_stmt stmt) { return(null); }