① 如何進行android資料庫操作
在自己Android資料庫接收或發出一個系統action的時候,要名副其實。比如你響應一個view動作,做的確實edit的勾當,你發送一個pick消息,其實你想讓別人做edit的事,這樣都會造成混亂。
一個好的習慣是創建一個輔助類來簡化你的Android資料庫交互。考慮創建一個資料庫適配器,來添加一個與資料庫交互的包裝層。它應該提供直觀的、強類型的方法,如添加、刪除和更新項目。資料庫適配器還應該處理查詢和對創建、打開和關閉資料庫的包裝。
它還常用靜態的Android資料庫常量來定義表的名字、列的名字和列的索引。下面的代碼片段顯示了一個標准資料庫適配器類的框架。它包括一個SQLiteOpenHelper類的擴展類,用於簡化打開、創建和更新資料庫。
import android.content.Context; import android.database.*; import android.database.sqlite.*; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.util.Log; public class MyDBAdapter { // The name and column index of each column in your database. public static final String KEY_NAME=」name」; public static final int NAME_COLUMN = 1; // TODO: Create public field for each column in your table. // SQL Statement to create a new database. private static final String DATABASE_CREATE = 「create table 「 + DATABASE_TABLE + 「 (「 + KEY_ID + 「 integer primary key autoincrement, 「 + KEY_NAME + 「 text not null);」; // Variable to hold the database instance private SQLiteDatabase db; // Context of the application using the database. private final Context context; // Database open/upgrade helper private myDbHelper dbHelper; public MyDBAdapter(Context _context) { context = _context; dbHelper = new myDbHelper(context, DATABASE_NAME, null, DATABASE_VERSION); } public MyDBAdapter open() throws SQLException { db = dbHelper.getWritableDatabase(); return this; } public void close() { db.close(); } public long insertEntry(MyObject _myObject) { ContentValues contentValues = new ContentValues(); // TODO fill in ContentValues to represent the new row return db.insert(DATABASE_TABLE, null, contentValues); } public boolean removeEntry(long _rowIndex) { return db.delete(DATABASE_TABLE, KEY_ID + 「=」 + _rowIndex, null) > 0; } public Cursor getAllEntries () { return db.query(DATABASE_TABLE, new String[] {KEY_ID, KEY_NAME}, null, null, null, null, null); } public MyObject getEntry(long _rowIndex) { MyObject objectInstance = new MyObject(); // TODO Return a cursor to a row from the database and // use the values to populate an instance of MyObject return objectInstance; } public int updateEntry(long _rowIndex, MyObject _myObject) { String where = KEY_ID + 「=」 + _rowIndex; ContentValues contentValues = new ContentValues(); // TODO fill in the ContentValue based on the new object return db.update(DATABASE_TABLE, contentValues, where, null); } private static class myDbHelper extends SQLiteOpenHelper { public myDbHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); } // Called when no database exists in // disk and the helper class needs // to create a new one. @Override public void onCreate(SQLiteDatabase _db) { _db.execSQL(DATABASE_CREATE); }
② android 如何連接資料庫
這種方式通常連接一個外部的資料庫,第一個參數就是資料庫文件,這個資料庫不是當前項目中生成的,通常放在項目的Assets目錄下,當然也可以在手機內,如上面參數那個目錄,前提是那個文件存在且你的程序有訪問許可權。
另一種使用資料庫的方式是,自己創建資料庫並創建相應的資料庫表,參考下面的代碼:
public class DatabaseHelper extends SQLiteOpenHelper {
//構造,調用父類構造,資料庫名字,版本號(傳入更大的版本號可以讓資料庫升級,onUpgrade被調用)
public DatabaseHelper(Context context) {
super(context, DatabaseConstant.DATABASE_NAME, null, DatabaseConstant.DATABASE_VERSION);
}
//資料庫創建時調用,裡面執行表創建語句.
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(createVoucherTable());
}
//資料庫升級時調用,先刪除舊表,在調用onCreate創建表.
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + DatabaseConstant.TABLE_NAME);
onCreate(db);
}
//生成 創建表的SQL語句
private String createVoucherTable() {
StringBuffer sb = new StringBuffer();
sb.append(" CREATE TABLE ").append(DatabaseConstant.TABLE_NAME).append("( ").append(「ID」)
.append(" TEXT PRIMARY KEY, ")
.append(「USER_ID」).append(" INTEGER, ").append(「SMS_CONTENT」).append(" TEXT ) ");
return sb.toString();
}
} 繼承SQLiteOpenHelper並實現裡面的方法.
之後:
//得到資料庫助手類
helper
=
new
DatabaseHelper(context);
//通過助手類,打開一個可讀寫的資料庫連接
SQLiteDatabase
database
=
helper.getReadableDatabase();
//查詢表中所有記錄
database.query(DatabaseConstant.TABLE_NAME,
null,
null,
null,
null,
null,
null);
③ android怎麼將數據存入資料庫
你通過getText()方法首先得到輸入的值,然後兄叢調用資料庫的插入返塵液方法 db.insert();插入到漏物資料庫中就行 就想這樣 x0dx0aEditText et ; x0dx0aString num = et.getText().toString(); x0dx0apublic void addData(String num) { x0dx0a SQLiteDatabase db = dbHelper.getWritableDatabase(); x0dx0a ContentValues values = new ContentValues(); x0dx0a values.put("num", num); x0dx0a db.insert("表名", null, values); x0dx0a } x0dx0a x0dx0a當你調用這個 addData()方法時就會向資料庫中插入數據了
④ 怎樣使Android程序調用mysql資料庫裡面的數據
步驟:右擊項目找到build path->configure build path->libraries——>add External JARs添加驅動包
在帶芹此之前,首先:
在自己的電腦上Mysql下確定賬戶是"root",密碼是"橘行帶123456";
2.進入賬戶,創建資料庫cui;
3.在資料庫cui下面,創建表test1 包含_id(int 類型自動增加) username(String 類型)、password(String 類型);
4.在表中插入數圓蘆據,以便顯示
1packagecom.test.an;
2
3importjava.sql.Connection;
4importjava.sql.DriverManager;
5importjava.sql.PreparedStatement;
6importjava.sql.ResultSet;
7importjava.sql.SQLException;
8
9
10publicclassTestCon1{
11publicstaticvoidmain(String[]args)
12{
13Connectioncon=null;
14Stringsql;
15PreparedStatementpre;
16ResultSetrs;
17
18try{
19Stringdriver="com.mysql.jdbc.Driver";
20Class.forName(driver);
21
22Stringurl="jdbc:mysql://localhost:3306/cuiuseUnicode=true&characterEncoding=latin1";//utf-8也行
23con=DriverManager.getConnection(url,"root","123456");
24
25sql="select_id,username,passwordfromtest1";
26pre=con.prepareStatement(sql);
27
28rs=pre.executeQuery();
29while(rs.next()){
30intid=rs.getInt(1);
31Stringusername=rs.getString(2);
32Stringpassword=rs.getString(3);
33
34System.out.println("id="+id+";username="+username+";password="+password);
35}
36con.close();
37}catch(SQLExceptione){
38e.printStackTrace();
39}catch(ClassNotFoundExceptione){
40e.printStackTrace();
41}
42
43}
44
45}
id=1;username=ccc;password=123456
id=2;username=xxx;password=654321
id=3;username=ddd;password=123456
id=4;username=ddf÷;password=yyt
id=5;username=cuixiaodong;password=cxd
id=6;username=vv;password=cxd
⑤ android 怎麼讀取資料庫中的數據
android讀取資料庫可以使用sqlite一些api進行讀取,實例如下:
/**
*查找一條數據
*@paramuid
*/
publicUserfind(Integeruid){
SQLiteDatabasedb=dbOpenHelper.getReadableDatabase();//創建資料庫輔助類
Cursorcursor=db.rawQuery("select*fromuserwhereuid=?",newString[]{uid.toString()});//創建一個游標
if(cursor.moveToFirst()){//循環遍歷查找數組
intuid2=cursor.getInt(cursor.getColumnIndex("uid"));
Stringuname=cursor.getString(cursor.getColumnIndex("uname"));
Stringuaddress=cursor.getString(cursor.getColumnIndex("uaddress"));
Useruser=newUser();
user.setUid(uid2);
user.setUname(uname);
user.setUaddress(uaddress);
returnuser;
}
cursor.close();
returnnull;
}
⑥ android sqlite資料庫怎麼使用
其主要思路是:
1. 把資料庫分解成幾個asset文件。
2. 當需要打開資料庫消慎時,如果資料庫不存在,就把那幾個asset文件重新合並成一個數拿遲敬據庫文件。
3. 如果資料庫的版本改變了,就在onUpgrade()方法中把資料庫文件刪除掉。
下面是代碼:
//資料庫的預設路徑
private static finalString DB_PATH = "/data/data/com.mypackage.myapp/databases/";
private static finalString DB_NAME = "mydb.db";
private static finalint DB_VERSION = 2;
private static finalString DB_SPLIT_NAME = "mydb.db.00";
private static finalint DB_SPLIT_COUNT = 3;
private SQLiteDatabasem_database;
private final Contextm_context;
/**
* Constructor
*保存傳進來的context參數以用來訪問應用的asset和資源文件。
* @param context
*/
public MyDB(Contextcontext) {
super(context, DB_NAME, null, DB_VERSION);
this.m_context = context;
}
public static MyDBopenDatabaseReadOnly(Context context) {
MyDB db = new MyDB(context);
try {
db.createDataBase();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
db.openDataBase(SQLiteDatabase.OPEN_READONLY);
return db;
}
public static MyDBopenDatabaseReadWrite(Context context) {
MyDB db = new MyDB(context);
try {
db.createDataBase();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
db.openDataBase(SQLiteDatabase.OPEN_READWRITE);
return db;
}
/**
*創建一個空資料庫,用來存儲你已有的資料庫。
*/
public voidcreateDataBase() throws IOException{
boolean dbExist =checkDataBase();
if (dbExist) {
/*
**如果你的資料庫的版旦笑本改變了,調用這個方法確保在onUpgrade()被調用時
**傳進去的是可寫的資料庫。
*/
SQLiteDatabase db =this.getWritableDatabase();
if (db != null) {
db.close();
}
}
dbExist = checkDataBase();
if (!dbExist) {
try {
/*
** 調用這個方法以確保在預設路徑內產生一個空資料庫,以便在其基礎上復制我們已有的資料庫。
*/
SQLiteDatabase db =this.getReadableDatabase();
if (db != null) {
db.close();
}
DataBase();
}
catch (IOException e) {
Log.e("DB", e.getMessage());
throw new Error("Error ingdatabase");
}
}
}
/**
* 檢查資料庫是否已存在,以避免重復復制。
* @return true if it exists, false if itdoesn't
*/
private static booleancheckDataBase(){
SQLiteDatabase checkDB = null;
try {
String path = DB_PATH + DB_NAME;
checkDB =SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READONLY);
}
catch (SQLiteException e){
//database does't exist yet.
}
if (checkDB != null) {
checkDB.close();
}
return checkDB != null ? true : false;
}
/**
* 把存在asset文件中的資料庫復制的剛創建的空資料庫中。
* */
private voidDataBase() throws IOException {
// 剛創建的空資料庫的路徑
String outFileName = DB_PATH + DB_NAME;
// 打開空資料庫
OutputStream output = new FileOutputStream(outFileName);
byte[] buffer = new byte[1024*8];
AssetManager assetMgr =m_context.getAssets();
for (int i = 1; i <= DB_SPLIT_COUNT; i++){
// 打開分解的asset文件
String fn = DB_SPLIT_NAME +String.valueOf(i);
InputStream input = assetMgr.open(fn);
//Log.i("DB", "opened" + fn);
int length;
while ((length = input.read(buffer)) >0) {
//Log.i("DB", "read" + String.valueOf(length));
output.write(buffer, 0, length);
//Log.i("DB", "write" + String.valueOf(length));
}
input.close();
}
//Close the streams
output.flush();
output.close();
}
/**
* 打開資料庫。
* */
private voidopenDataBase(int flags) throws SQLException{
//Open the database
String myPath = DB_PATH + DB_NAME;
m_database =SQLiteDatabase.openDatabase(myPath, null, flags);
}
/**
* 關閉資料庫。
* */
@Override
public synchronizedvoid close() {
if (m_database != null)
m_database.close();
super.close();
}
}
@Override
public voidonCreate(SQLiteDatabase db) {
// 不需做任何事
}
/**
* 在資料庫版本提高時,刪除原有資料庫。
* */
@Override
public voidonUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (newVersion > oldVersion) {
m_context.deleteDatabase(DB_NAME);
}
}
⑦ android 怎麼讀取資料庫中的數據
android讀取資料庫可以使用sqlite一些api進行讀取,實例如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
* 查找一條數據
* @param uid
*/
public User find(Integer uid){
SQLiteDatabase db=dbOpenHelper.getReadableDatabase(); //創建資料庫輔助類
Cursor cursor =db.rawQuery("select * from user where uid=?", new String[]{uid.toString()}); //創建一個游標
if(cursor.moveToFirst()){ //循環遍歷查找數組
int uid2=cursor.getInt(cursor.getColumnIndex("uid"));
String uname=cursor.getString(cursor.getColumnIndex("uname"));
String uaddress=cursor.getString(cursor.getColumnIndex("uaddress"));
User user=new User();
user.setUid(uid2);
user.setUname(uname);
user.setUaddress(uaddress);
return user;
}
cursor.close();
return null;
}
⑧ 如何操作android中的資料庫
Android 不自動提供資料庫。在 Android 應用程序中使用 SQLite,必須自己創建資料庫,然後創建表、索引,填充數據。Android 提供了 SQLiteOpenHelper 幫助你創建一個資料庫,你只要繼承 SQLiteOpenHelper 類,就可以輕松的創建資料庫。SQLiteOpenHelper 類根據開發應用程序的需要,封裝了創建和更新資料庫使用的邏輯。SQLiteOpenHelper 的子類,至少需要實現三個方法:
構造函數,調用父類 SQLiteOpenHelper 的構造函數
onCreate()方法;// TODO 創建資料庫後,對資料庫的操作
onUpgrage()方法。// TODO 更改資料庫版本的操作
當你完成了對資料庫的操作(例如你的 Activity 已經關閉),需要調用 SQLiteDatabase 的 Close() 方法來釋放掉資料庫連接。
⑨ 怎樣使Android程序調用mysql資料庫裡面的數據
1.首先需要安裝MySQL Server 5.1和navicat for mysql。這個安裝是很簡單的,網上很多教程,和安裝一般軟體差不多。只有在安裝MySQL Server 5.1時,要注意選擇字元編碼為gb2312(中文)那個選項。
2. 使用navicat for mysql導入數據文件
a打開navicat for mysql,和localhost本地資料庫連接,就可以看到剛才建立的資料庫和表,
b可以導入本地的txt數據毀談文件,注意保持格式正確模余逗,
c下面一步要注意一下,如果資料庫中旦賣有中文數據,編碼格式一定要選擇是中文的GB2312,
d然後間隔符為空格(根據txt中的具體情況來定),
e並選擇目標表,將每一列一一對應,即可導入。