📄 test.cs
字号:
using System;using FastDbNet;namespace FastDbNetTest{ public class Test { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main(string[] args) { int rc; uint oid = 0; int nRecords = 3; FastDbConnection connection = new FastDbConnection("test"); connection.InitDbSize = FastDbConnection.DefaultInitDatabaseSize*2; connection.InitIdxSize = FastDbConnection.DefaultInitIndexSize*2; connection.ExtensionQuantum = FastDbConnection.DefaultExtensionQuantum*2; connection.Open(); FastDbFields fields = new FastDbFields(); fields.Add("int_field", CLI.FieldType.cli_int8, CLI.FieldFlags.cli_hashed); fields.Add("str_field", CLI.FieldType.cli_asciiz, CLI.FieldFlags.cli_indexed); rc = connection.CreateTable("test", fields); if (rc < 0) Console.WriteLine("cli_create_table: {0}", CLI.CliErrorToStr(rc)); FastDbCommand command = connection.CreateCommand("insert into test"); command.Fields.Assign(fields); // You could also do: command.Describe(); DateTime time = DateTime.Now; long key = 1999; for (int i = 0; i < nRecords; i++) { key = (3141592621L * key + 2718281829L) % 1000000007L; command.Fields[0].asInt64 = key; command.Fields[1].asString = key.ToString(); oid = command.Insert(); } connection.Commit(); Console.WriteLine(String.Format("Elapsed time for inserting {0} records: {1} (speed: {2:F2})", nRecords, DateTime.Now - time, nRecords*1000 / (DateTime.Now - time).TotalMilliseconds)); command = connection.CreateCommand("insert into persons"); command.Fields.Add("name", CLI.FieldType.cli_asciiz, CLI.FieldFlags.cli_indexed); command.Fields.Add("salary", CLI.FieldType.cli_int8); command.Fields.Add("address", CLI.FieldType.cli_asciiz); command.Fields.Add("weight", CLI.FieldType.cli_real8); command.Fields.Add("subordinates", CLI.FieldType.cli_array_of_oid, CLI.FieldFlags.cli_noindex, "persons"); rc = connection.CreateTable("persons", command.Fields); if (rc < 0) Console.WriteLine("cli_create_table: {0}", rc); Console.WriteLine("Name\tType\tSize\tCapacity\tFlags"); for (int i=0; i < command.Fields.Count; ++i) { FastDbField f = command.Fields[i]; Console.WriteLine("{0}\t{1}\t{2}\t{3}\t{4}", f.Name, f.Type, f.Size, f.Capacity, f.Flags); } connection.Commit(); time = DateTime.Now; for (int i=0; i < nRecords; ++i) { int n = 0; command.Fields[n++].asString = String.Format("Name{0}", i+1); command.Fields[n++].asInt64 = (i+1) * 1000; command.Fields[n++].asString = String.Format("Address {0}", 100-i); command.Fields[n++].asDouble = (i+1) * 100; command.Fields[n].ArraySize = (i==0) ? 0 : 1; if (i > 0) command.Fields[n].SetArrayValue(0, oid); oid = command.Insert(); } connection.Commit(); Console.WriteLine("Elapsed time for inserting {0} records: {1} (speed: {2:F2})", nRecords, DateTime.Now - time, nRecords*1000 / (DateTime.Now - time).TotalMilliseconds); command = connection.CreateCommand("select * from persons"); //command.Execute(); DumpRecords(command); connection.Commit(); command = connection.CreateCommand(@"select * from persons where length(subordinates) < %subordinates and salary > %salary"); command.Parameters.Add("subordinates", CLI.FieldType.cli_int4); command.Parameters.Add("salary", CLI.FieldType.cli_int8); command.Parameters["subordinates"].asInteger = 1; command.Parameters["salary"].asInteger = 100; //command.Execute(); DumpRecords(command); } public static void DumpRecords(FastDbCommand command) { Console.WriteLine(); Console.WriteLine("---SQL: \"{0}\"---", command.SQL); command.Describe(); // Ensure that field descriptions are fetched from the database. foreach (FastDbField f in command.Fields) Console.Write("{0}\t", f.Name); Console.WriteLine(); foreach(FastDbCommand.Cursor cur in command.Select()) { foreach (FastDbField f in cur.Fields) Console.Write("{0}\t", f.asString); Console.WriteLine(); } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -