android 数据库主键,是否可以在Android数据库中的文本字段上应用主键

我创建了一个简单的表,其中包含人员的姓名和电子邮件ID.当我给出这样的创建查询时:

“创建表联系人(名称文本不为空,电子邮件文本主键不为null);”

但这不行.我运行时没有得到任何异常或错误,主键是正常工作.使用SQLite浏览器浏览表时,我观察到只有四种数据类型:

是否可以将主键应用于整数?如果我想要文本字段上的主键是什么,谢谢.这是我使用的代码:

公共类DBAdapter {

public static final String KEY_ROWID = "_id";

public static final String KEY_NAME = "name";

public static final String KEY_EMAIL = "email";

private static final String TAG = "DBAdapter";

private static final String DATABASE_NAME = "MyDB";

private static final String DATABASE_TABLE = "contacts";

private static final int DATABASE_VERSION = 2;

private static final String DATABASE_CREATE =

"create table contacts (_id integer primary key autoincrement, "

+ "name text not null, email text not null);";

private final Context context;

private DatabaseHelper DBHelper;

private SQLiteDatabase db;

public DBAdapter(Context ctx)

{

this.context = ctx;

DBHelper = new DatabaseHelper(context);

}

private static class DatabaseHelper extends SQLiteOpenHelper

{

DatabaseHelper(Context context)

{

super(context, DATABASE_NAME, null, DATABASE_VERSION);

}

@Override

public void onCreate(SQLiteDatabase db)

{

try {

db.execSQL(DATABASE_CREATE);

} catch (SQLException e) {

e.printStackTrace();

}

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)

{

Log.w(TAG, "Upgrading database from version " + oldVersion + " to "

+ newVersion + ", which will destroy all old data");

db.execSQL("DROP TABLE IF EXISTS contacts");

onCreate(db);

}

}

//---opens the database---

public DBAdapter open() throws SQLException

{

db = DBHelper.getWritableDatabase();

return this;

}

//---closes the database---

public void close()

{

DBHelper.close();

}

//---insert a contact into the database---

public long insertContact(String name, String email)

{

ContentValues initialValues = new ContentValues();

initialValues.put(KEY_NAME, name);

initialValues.put(KEY_EMAIL, email);

return db.insert(DATABASE_TABLE, null, initialValues);

}

//---deletes a particular contact---

public boolean deleteContact(long rowId)

{

return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;

}

//---retrieves all the contacts---

public Cursor getAllContacts()

{

return db.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_NAME,

KEY_EMAIL}, null, null, null, null, null);

}

//---retrieves a particular contact---

public Cursor getContact(long rowId) throws SQLException

{

Cursor mCursor =

db.query(true, DATABASE_TABLE, new String[] {KEY_ROWID,

KEY_NAME, KEY_EMAIL}, KEY_ROWID + "=" + rowId, null,

null, null, null, null);

if (mCursor != null) {

mCursor.moveToFirst();

}

return mCursor;

}

//---updates a contact---

public boolean updateContact(long rowId, String name, String email)

{

ContentValues args = new ContentValues();

args.put(KEY_NAME, name);

args.put(KEY_EMAIL, email);

return db.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值