miniob比赛中droptable实现

主要参考

Drop Table -Miniob2023版 – KeplerFlow's Blog

文章其实已经相当全面了,主要说一些第一次进行相关代码修改遇到的问题

问题1:error: ‘XXX’ is not a member of ‘RC’

RC中没有声明这个成员,到RC定义的相关代码进行添加即可,在rc.h中按格式进行添加

问题2:error: no declaration matches ‘RC Db::drop_table(const char*)’

没有在db.h中声明这个函数,仿照create_table的格式进行仿写,注意drop相关的变量成员更少,注意修改

问题3:stmt.cpp:(.text+0x1a1): undefined reference to `DropTableStmt::create(Db*, DropTableSqlNode const&, Stmt*&)'

但是其实按照文章进行修改代码的话我们已经声明了相关的信息,进行相关的资料查阅推测应该是代码的链接出了问题,在miniob中进行编译时,重新运行一次

cmake  .. -DDEBUG=ON
make

问题四:修改了代码但是push到远程仓库后代码没有改变

因为没有更新本地仓库中的代码,因此远程也只是push了原始代码,重新运行

git init
git add .
git commmit -m 'init'

清除自己在gitee上的仓库内容,再运行

git branch -M main
git push -u origin main

就可以完成代码更新,中间在git add .时会有warning但是好像不影响后续运行
 

Ormlite是一个用于Android开发的对象关系映射(ORM)框架,它可以将数据库的数据映射到Java对象,从而使开发者不需要编写复杂的SQL语句来操作数据库。 要在Ormlite框架实现CRUD操作,需要以下几步: 1. 在项目添加Ormlite的依赖: ``` implementation 'com.j256.ormlite:ormlite-core:5.0' implementation 'com.j256.ormlite:ormlite-android:5.0' ``` 2. 定义Java对象,使用@DatabaseTable注解将其映射到数据库表: ``` @DatabaseTable(tableName = "person") public class Person { @DatabaseField(generatedId = true) private int id; @DatabaseField(columnName = "name") private String name; @DatabaseField(columnName = "age") private int age; // 省略getter和setter方法 } ``` 3. 创建数据库,使用OrmLiteSqliteOpenHelper类创建数据库: ``` public class DatabaseHelper extends OrmLiteSqliteOpenHelper { private static final String DATABASE_NAME = "person.db"; private static final int DATABASE_VERSION = 1; private Dao<Person, Integer> personDao; public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) { try { TableUtils.createTable(connectionSource, Person.class); } catch (SQLException e) { e.printStackTrace(); } } @Override public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) { try { TableUtils.dropTable(connectionSource, Person.class, true); onCreate(database, connectionSource); } catch (SQLException e) { e.printStackTrace(); } } public Dao<Person, Integer> getPersonDao() throws SQLException { if (personDao == null) { personDao = getDao(Person.class); } return personDao;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值