Android SQL不插入对象
我试图使用SQL将编辑文本的值保存在表中,但它没有插入任何内容。我检查表是否已创建,是否已创建,但它为空 有一个MyDatabase类,我将它与SQL一起使用Android SQL不插入对象,android,sql,Android,Sql,我试图使用SQL将编辑文本的值保存在表中,但它没有插入任何内容。我检查表是否已创建,是否已创建,但它为空 有一个MyDatabase类,我将它与SQL一起使用 public class MyDatabase extends SQLiteOpenHelper { public static final int database_version = 1 ; public static final String database_name = "Posts" ;
public class MyDatabase extends SQLiteOpenHelper
{
public static final int database_version = 1 ;
public static final String database_name = "Posts" ;
public static final String Table_Name = "posts" ;
public static final String POST_COL_ID = "id" ;
public static final String POST_COL_NAME = "name" ;
public static final String POST_COL_TYPE = "type" ;
public static final String POST_COL_DIS = "description" ;
public static final String POST_COL_TEAM_NUM = "team number" ;
public static final String POST_COL_NUM_NEED = "number need" ;
public MyDatabase(Context context){
super(context ,database_name ,null , database_version);
//Toast.makeText(context, "created", Toast.LENGTH_SHORT).show();
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
String create ="CREATE TABLE " +Table_Name +" ("+ POST_COL_ID +" INTEGER PRIMARY KEY AUTOINCREMENT ,"+
""+POST_COL_NAME+" TEXT ,"+POST_COL_DIS+" TEXT ,"+POST_COL_TEAM_NUM+" INTEGER , "+
""+ POST_COL_NUM_NEED + " INTEGER ," + POST_COL_TYPE + " TEXT )";
sqLiteDatabase.execSQL(create);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS Posts" );
onCreate(sqLiteDatabase);
}
public boolean InsertPost(post post){
SQLiteDatabase sqLiteDatabase = getWritableDatabase() ;
ContentValues contentValues = new ContentValues() ;
contentValues.put(POST_COL_NAME , post.getName());
contentValues.put(POST_COL_TYPE , post.getTeam_type());
contentValues.put(POST_COL_DIS , post.getDiscription());
contentValues.put(POST_COL_TEAM_NUM , post.getTeam_num());
contentValues.put(POST_COL_NUM_NEED , post.getNeed_num());
long result = sqLiteDatabase.insert(Table_Name , null , contentValues) ;
return result != -1 ;
}
当我调用它来保存这些数据时
post new_post = new post(name, discription, team_num, need_num, team_type);
myDatabase = new MyDatabase(getBaseContext());
myDatabase.InsertPost(new_post);
boolean result = myDatabase.InsertPost(new_post);
if (result)
Toast.makeText(getBaseContext(), "success", Toast.LENGTH_SHORT).show();
else
Toast.makeText(team_info.this, myDatabase.getPostsCount() +"", Toast.LENGTH_SHORT).show();
下面是我的工作数据库中的一个示例
public DatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table " + USER_TABLE_NAME + "(" +
USER_COLUMN_ID + " integer primary key AUTOINCREMENT NOT NULL, " +
USER_COLUMN_EMAIL + " text, " +
USER_COLUMN_PASSWORD + " text, " +
USER_COLUMN_TYPE + " integer, " +
USER_COLUMN_NAME + " text, " +
USER_COLUMN_LASTNAME + " text," +
USER_COLUMN_CONTACTNO + " text, " +
USER_COLUMN_STREET_NUMBER + " integer, " + // nullable
USER_COLUMN_STREET_NAME + " text, " +// nullable
USER_COLUMN_SUBURB + " text, " +
USER_COLUMN_POSTCODE + " integer, " +
USER_COLUMN_BUSINESS_NAME + " text )");
......
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table if exists " + USER_TABLE_NAME);
db.execSQL("drop table if exists " + RESOURCE_TABLE_NAME);
db.execSQL("drop table if exists " + EVENT_TABLE_NAME);
onCreate(db);
}
这是我的插页
public String insertUser(User user)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(USER_COLUMN_EMAIL, user.getEmail());
contentValues.put(USER_COLUMN_PASSWORD, user.getPassword());
contentValues.put(USER_COLUMN_TYPE, user.getUserType());
contentValues.put(USER_COLUMN_NAME, user.getName());
contentValues.put(USER_COLUMN_LASTNAME, user.getLastName());
contentValues.put(USER_COLUMN_CONTACTNO, user.getContactNo());
if(user.getStreetName() == null && user.getStreetNumber() == null)
{
}else {
contentValues.put(USER_COLUMN_STREET_NUMBER, user.getStreetNumber());
contentValues.put(USER_COLUMN_STREET_NAME, user.getStreetName());
}
contentValues.put(USER_COLUMN_SUBURB, user.getSuburb());
contentValues.put(USER_COLUMN_POSTCODE, user.getPostcode());
if(user.getBusinessName() == null)
{
// Default to "private" businessName
} else {
// Get user businessName
contentValues.put(USER_COLUMN_BUSINESS_NAME, user.getBusinessName());
}
long id = db.insert(USER_TABLE_NAME, null, contentValues);
return Long.toString(id);
}
您确认该表是通过检查设备上的文件创建的吗?
另外,插入数据库时的返回值不是布尔值,如果我没记错的话,它将是主键值
也许可以将“createtable”改为小写的“createtable”,看看是否有不同