나는 가장 가까운 장소를 제공하는 안드로이드 응용 프로그램을 개발 중이다. output.i는 사용자의 현재 위치를 얻기를 희망하고, app은 가장 가까운 위치를 계산해야한다. 데이터 베이스. 내 질문은 데이터베이스를 만드는 방법이며 어디에 만들어야합니까? 내가 사용해야 할 기술은 무엇입니까? U 녀석들의 빠른 반응을 기대하십시오. 모두 감사합니다 ...--)내 안드로이드 애플 리케이션을위한 데이터베이스를 만드는 방법
0
A
답변
0
"Android 용 SQLite"를 검색하고 나에게 fistly Android Deveoper page for storage을 살펴보십시오.
2
Google에 질문하기 전에 안드로이드에서 데이터베이스를 만드는 것과 관련된 많은 샘플과 가이드가 있습니다.
public class DBAdapter extends SQLiteOpenHelper {
private static String DB_PATH = "";
private static final String DB_NAME = "Databasefilename.sqlite";
private SQLiteDatabase myDataBase;
private final Context myContext;
private static DBAdapter mDBConnection;
/**
* Constructor
* Takes and keeps a reference of the passed context in order to access to the application assets and resources.
* @param context
*/
private DBAdapter(Context context)
{
super(context, DB_NAME, null, 1);
this.myContext = context;
DB_PATH = "/data/data/"+ context.getApplicationContext().getPackageName()+ "/databases/";
try {
createDataBase();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// The Android's default system path of your application database is
// "/data/data/mypackagename/databases/"
}
/**
* getting Instance
* @param context
* @return DBAdapter
*/
public static synchronized DBAdapter getDBAdapterInstance(Context context)
{
if (mDBConnection == null)
{
mDBConnection = new DBAdapter(context);
}
return mDBConnection;
}
/**
* Creates an empty database on the system and rewrites it with your own database.
**/
public void createDataBase() throws IOException
{
boolean dbExist = checkDataBase();
if (dbExist)
{
// do nothing - database already exist
} else {
// By calling following method
// 1) an empty database will be created into the default system path of your application
// 2) than we overwrite that database with our database.
this.getReadableDatabase();
try {
copyDataBase();
} catch (IOException e) {
throw new Error("Error copying database");
}
}
}
/**
* Check if the database already exist to avoid re-copying the file each time you open the application.
* @return true if it exists, false if it doesn't
*/
private boolean checkDataBase()
{
SQLiteDatabase checkDB = null;
try {
String myPath = DB_PATH + DB_NAME;
checkDB = SQLiteDatabase.openDatabase(myPath, null,SQLiteDatabase.OPEN_READONLY);
} catch (SQLiteException e)
{
// database does't exist yet.
}
if (checkDB != null) {
checkDB.close();
}
return checkDB != null ? true : false;
}
/**
* Copies your database from your local assets-folder to the just created
* empty database in the system folder, from where it can be accessed and
* handled. This is done by transfering bytestream.
* */
private void copyDataBase() throws IOException {
// Open your local db as the input stream
InputStream myInput = myContext.getAssets().open(DB_NAME);
// Path to the just created empty db
String outFileName = DB_PATH + DB_NAME;
// Open the empty db as the output stream
OutputStream myOutput = new FileOutputStream(outFileName);
// transfer bytes from the inputfile to the outputfile
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer)) > 0)
{
myOutput.write(buffer, 0, length);
}
// Close the streams
myOutput.flush();
myOutput.close();
myInput.close();
}
/**
* Open the database
* @throws SQLException
*/
public void openDataBase() throws SQLException {
String myPath = DB_PATH + DB_NAME;
myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
}
/**
* Close the database if exist
*/
@Override
public synchronized void close()
{
if (myDataBase != null)
myDataBase.close();
super.close();
}
/**
* Call on creating data base for example for creating tables at run time
*/
@Override
public void onCreate(SQLiteDatabase db)
{
}
/**
* can used for drop tables then call onCreate(db) function to create tables again - upgrade
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
}
// ----------------------- CRUD Functions ------------------------------
/**
* This function used to select the records from DB.
* @param tableName
* @param tableColumns
* @param whereClase
* @param whereArgs
* @param groupBy
* @param having
* @param orderBy
* @return A Cursor object, which is positioned before the first entry.
*/
public Cursor selectRecordsFromDB(String tableName, String[] tableColumns,String whereClase, String whereArgs[], String groupBy,String having, String orderBy)
{
return myDataBase.query(tableName, tableColumns, whereClase, whereArgs,groupBy, having, orderBy);
}
/**
* select records from db and return in list
* @param tableName
* @param tableColumns
* @param whereClase
* @param whereArgs
* @param groupBy
* @param having
* @param orderBy
* @return ArrayList<ArrayList<String>>
*/
public ArrayList<ArrayList<String>> selectRecordsFromDBList(String tableName, String[] tableColumns,String whereClase, String whereArgs[], String groupBy,String having, String orderBy)
{
ArrayList<ArrayList<String>> retList = new ArrayList<ArrayList<String>>();
ArrayList<String> list = new ArrayList<String>();
Cursor cursor = myDataBase.query(tableName, tableColumns, whereClase, whereArgs,
groupBy, having, orderBy);
if (cursor.moveToFirst())
{
do
{
list = new ArrayList<String>();
for(int i=0; i<cursor.getColumnCount(); i++)
{
list.add(cursor.getString(i));
}
retList.add(list);
} while (cursor.moveToNext());
}
if (cursor != null && !cursor.isClosed()) {
cursor.close();
}
return retList;
}
/**
* This function used to insert the Record in DB.
* @param tableName
* @param nullColumnHack
* @param initialValues
* @return the row ID of the newly inserted row, or -1 if an error occurred
*/
public long insertRecordsInDB(String tableName, String nullColumnHack,ContentValues initialValues)
{
return myDataBase.insert(tableName, nullColumnHack, initialValues);
}
/**
* This function used to update the Record in DB.
* @param tableName
* @param initialValues
* @param whereClause
* @param whereArgs
* @return true/false on updating one or more records
*/
public boolean updateRecordInDB(String tableName,ContentValues initialValues, String whereClause, String whereArgs[])
{
return myDataBase.update(tableName, initialValues, whereClause,whereArgs) > 0;
}
/**
* This function used to update the Record in DB.
* @param tableName
* @param initialValues
* @param whereClause
* @param whereArgs
* @return 0 in case of failure otherwise return no of row(s) are updated
*/
public int updateRecordsInDB(String tableName,ContentValues initialValues, String whereClause, String whereArgs[])
{
return myDataBase.update(tableName, initialValues, whereClause, whereArgs);
}
/**
* This function used to delete the Record in DB.
* @param tableName
*
* @param whereClause
* @param whereArgs
* @return 0 in case of failure otherwise return no of row(s) are deleted.
*/
public int deleteRecordInDB(String tableName, String whereClause,
String[] whereArgs) {
return myDataBase.delete(tableName, whereClause, whereArgs);
}
// --------------------- Select Raw Query Functions ---------------------
/**
* apply raw Query
* @param query
* @param selectionArgs
* @return Cursor
*/
public Cursor selectRecordsFromDB(String query, String[] selectionArgs)
{
return myDataBase.rawQuery(query, selectionArgs);
}
/**
* apply raw query and return result in list
* @param query
* @param selectionArgs
* @return ArrayList<ArrayList<String>>
*/
public ArrayList<ArrayList<String>> selectRecordsFromDBList(String query, String[] selectionArgs)
{
ArrayList<ArrayList<String>> retList = new ArrayList<ArrayList<String>>();
ArrayList<String> list = new ArrayList<String>();
Cursor cursor = myDataBase.rawQuery(query, selectionArgs);
if (cursor.moveToFirst()) {
do{
list = new ArrayList<String>();
for(int i=0; i<cursor.getColumnCount(); i++){
list.add(cursor.getString(i));
}
retList.add(list);
} while (cursor.moveToNext());
}
if (cursor != null && !cursor.isClosed())
{
cursor.close();
}
return retList;
}
+1
+1 인터넷 검색에 대해 : –
+0
매우 감사드립니다. 나는 또한 간단한 질문을하기 전에 Google을 거쳐야한다고 생각합니다. . :-) –
관련 문제
- 1. 안드로이드 애플 리케이션을위한 SQlite 데이터베이스를 암호화하는 방법?
- 2. 내 안드로이드 애플 리케이션을위한 점수 카운터를 만드는 방법
- 3. 안드로이드 애플 리케이션을위한 디자인 추천
- 4. 애플 리케이션을위한 안드로이드 아이콘
- 5. 애플 리케이션을위한 안드로이드 커스텀 메뉴
- 6. 안드로이드 애플 리케이션을위한 intergrating 데이터베이스
- 7. 안드로이드 애플 리케이션을위한 데이터베이스 서버
- 8. 트위터 안드로이드 애플 리케이션을위한 로그인
- 9. 안드로이드 애플 리케이션을위한 캐싱 전략
- 10. 안드로이드 애플 리케이션을위한 웹 데이터베이스
- 11. 안드로이드 애플 리케이션을위한 스트레스 테스트
- 12. AlarmManager 안드로이드 애플 리케이션을위한 루프
- 13. 안드로이드 애플 리케이션을위한 데이터베이스 선택하기
- 14. 안드로이드 애플 리케이션을위한 jQTouch 대안
- 15. 안드로이드 애플 리케이션을위한 소스 코드?
- 16. 안드로이드 애플 리케이션을위한 데이터 스토리지
- 17. 안드로이드에서만 내 애플 리케이션을위한 zxing을 얻는 방법
- 18. 이클립스에 안드로이드 애플 리케이션을위한 문서를 생성
- 19. 게시 안드로이드 애플 리케이션을위한 서버 요구 사항
- 20. 안드로이드 애플 리케이션을위한 아이디어 설계 및 구현
- 21. 안드로이드 애플 리케이션을위한 콘텐츠 관리 시스템
- 22. 안드로이드 애플 리케이션을위한 java와 nodejs 합치기
- 23. 안드로이드 애플 리케이션을위한 공통 헤더 만들기
- 24. 안드로이드 애플 리케이션을위한 가정에서 서버 설정
- 25. 안드로이드 애플 리케이션을위한 보드 (체커)를 그리기
- 26. 안드로이드 애플 리케이션을위한 사용자 인터페이스 디자인하기
- 27. 안드로이드 애플 리케이션의 sqlite 데이터베이스를 다운로드하는 방법?
- 28. 작은 애플 리케이션을위한 레일
- 29. 어떻게 안드로이드에 changelog를 구현합니까? 내 애플 리케이션을위한
- 30. 안드로이드 애플 리케이션을위한 데이터를 미리로드하기위한 훌륭하고 우아하고 안전한 방법
문서는, 같은 간단한 기본적인 질문을 구글 배울 방법을 말한다 :
아래의 샘플 코드를 참조하십시오. – JoxTraex질문을 게시하기 전에 일부 R & D를하십시오 ... –
오, 감사합니다. swan.i '이유는 모르겠지만 Google을 통해 가기 전에 게시했습니다. (이것이 내가 stackoverfolw의 첫 질문 인 이유 일 수 있습니다. 나는 질문을하고 싶었다.) 그런 간단한 질문을하는 것에 대해 죄송합니다 ... –