/// <summary> /// DBTableのQuery結果をNDJsonで取り出す。 /// </summary> /// <remarks> /// <para> /// 得られるJSONは、{"columns":["カラム1","カラム2",...], /// "list":[["値1-1","値1-2",...],["値2-1","値2-2",...],...]} という形式になります。 /// </para> /// </remarks> /// <param name="tbl">対象DBTable</param> /// <param name="limit">最大取り出し件数。0の場合無制限</param> /// <param name="offset">何件目以降を返すか。先頭レコードは0</param> public static NDJson GetJson(this DBTable tbl, int limit = 0, int offset = 0) { NDJson json = new NDJson("columns", tbl.Columns); NDJson list = new NDJson(); using (DBReader reader = tbl.Query(limit, offset)) { string[] item; while ((item = reader.Get()) != null) { list.Add(new NDJson(item)); } } json.Set("list", list); return(json); }
public static int Main(string[] args) { IniFile conf = new IniFile("Example.ini"); DBCon.UseConsoleLog = true; DBTableDef.LoadAll("tabledef"); using (DBCon db = new DBCon(conf)) { DBTable tbl = new DBTable(db, "サンプルテーブル"); tbl.SetColumns("名前", "電話番号"); // 結果を1件だけ抽出する DataArray rec = tbl.GetRecordData("ID", 1); // 上記は以下のコードと同じ動作をする // tbl.SetCondition("ID", 1); // List<DataArray> recs = tbl.GetData(1); // DataArray rec; // if(recs.Count > 0) // rec = recs[0]; // else // rec = null; Console.WriteLine("なまえ:{0}、でんわ:{1}", rec["名前"], rec["電話番号"]); // 該当件数だけを獲得する tbl.SetCondition(DBCondition.Code.GreaterOrEqual, "ID", 100); int n = tbl.GetCount(); Console.WriteLine("該当件数は{0}", n); // 該当件数が巨大であることが見込まれる場合の処理方法 tbl.SetCondition(DBCondition.Code.GreaterThan, "ID", 0); using (DBReader reader = tbl.Query(0, 0)) { string[] val; while ((val = reader.Get()) != null) { rec = new DataArray(tbl.Columns, val); Console.WriteLine("なまえ:{0}、でんわ:{1}", rec["名前"], rec["電話番号"]); } } } return(0); }