[英]ROOM Android SQLite database - Cannot create table
I was trying few days to somehow successed creating the database and the table, but I just cant, and I need your help badly.我尝试了几天以某种方式成功创建数据库和表,但我不能,我非常需要你的帮助。 My database is always empty, I dont even create the table.
我的数据库总是空的,我什至不创建表。 :/
:/
Here are my classses:这是我的课:
ENTITY:实体:
@Entity (tableName = "users")
class User {
@ColumnInfo(name = "id")
@PrimaryKey(autoGenerate = true)
private
long id;
@ColumnInfo(name = "first_name")
private
String firstName;
@ColumnInfo(name = "last_name")
private
String lastName;
User(String firstName, String lastName){
this.firstName = firstName;
this.lastName = lastName;
}
long getId() {
return id;
}
String getFirstName() {
return firstName;
}
String getLastName() {
return lastName;
}
public void setId(long id) {
this.id = id;
}
}
DAO:道:
@Dao
public interface UserDao {
@Insert
long insertData(User user);
@Update
void updateData(User user);
@Delete
void deleteData(User user);
}
DATABASE:数据库:
@Database(entities = {User.class}, version = 1, exportSchema = false)
public abstract class UserDatabase extends RoomDatabase {
public abstract UserDao userDao();
}
REPOSITORY:存储库:
class UserRepository {
private Context context;
private String DB_NAME = "userdb.db";
private UserDatabase userDatabase;
UserRepository(Context context){
this.context = context;
userDatabase = Room.databaseBuilder(context, UserDatabase.class, DB_NAME).build();
Toast.makeText(context, "Database created...", Toast.LENGTH_SHORT).show();
}
@SuppressLint("StaticFieldLeak")
void insertTask(User user){
new AsyncTask<Void, Void, Void>(){
@Override
protected Void doInBackground(Void... voids) {
long result = userDatabase.userDao().insertData(user);
Log.d("LOG", String.valueOf(result));
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
Toast.makeText(context, "Success", Toast.LENGTH_SHORT).show();
}
}.execute();
}
}
MAINACTIVITY (I'm getting the text from two edittext and passing in to Entity class) MAINACTIVITY(我从两个编辑文本中获取文本并传递给实体类)
public class MainActivity extends AppCompatActivity {
EditText first_Name, last_Name;
Button save_btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
first_Name = findViewById(R.id.first_name);
last_Name = findViewById(R.id.last_name);
save_btn = findViewById(R.id.save_btn);
save_btn.setOnClickListener(view -> {
UserRepository userRepository = new UserRepository(MainActivity.this);
User user = new User(first_Name.getText().toString().trim(),
last_Name.getText().toString().trim());
userRepository.insertTask(user);
});
}
I dont even create the table
我什至不创建表
It known working Toast seen log having D/LOG: 1
它知道工作 Toast 看到日志具有
D/LOG: 1
You copy database (only userdb.db file) and using tool (like DB SQLite Browser) see database empty.您复制数据库(仅 userdb.db 文件)并使用工具(如 DB SQLite Browser)查看数据库为空。
Needing to copy userdb.db and userdb.db-wal to seen in tool.需要将 userdb.db 和 userdb.db-wal 复制到工具中才能看到。
-wal having changes not checkpointed -wal有更改未检查点
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.