public void createTable(string tblname, Schema sch, Transaction tx) {//创建一个新表,有指定的表名称、模式信息 TableInfo ti = new TableInfo(tblname, sch); //往tblcat表中插入一条记录 RecordFile tcatfile = new RecordFile(tcatInfo, tx); tcatfile.insert(); tcatfile.setString("tblname", tblname); tcatfile.setInt("reclength", ti.recordLength()); tcatfile.close(); //往fldcat表中插入记录:每个字段的信息 RecordFile fcatfile = new RecordFile(fcatInfo, tx); foreach (string fldname in sch.fields()) { fcatfile.insert(); fcatfile.setString("tblname", tblname); fcatfile.setString("fldname", fldname); fcatfile.setInt("type", sch.type(fldname)); fcatfile.setInt("length", sch.length(fldname)); fcatfile.setInt("offset", ti.offset(fldname)); } fcatfile.close(); }
//实现UpdateScan接口 public void setVal(string fldname, Constant val) { if (sch.type(fldname) == Schema.INTEGER) { rf.setInt(fldname, (int)val.asCsharpVal()); } else { rf.setString(fldname, (string)val.asCsharpVal()); } }