آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مشکل در ایجاد دیتابیس {عین کد استاد}{مگه میشه}

rad  10 سال پیش  9 سال پیش
0 0

برای ایجاد دیتابیس عین استاد کد میزنم ولی ایجاد نمیشه؟

package sm.example.asss;

import java.io.File;

import android.R.string;
import android.app.Application;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Environment;

public class G extends Application {
public static Context context;
public static SQLiteDatabase database;
public static final String DIR_SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath();
public static final String DIR_DATABASE = DIR_SDCARD + "/databese-test/";


@Override
public void onCreate() {
super.onCreate();
context=this.getApplicationContext();
new File(DIR_DATABASE).mkdir();
database.openOrCreateDatabase(DIR_DATABASE+ "/database.sqlite", null);
}

}

0 0
به جای mkdir() بنویس mkdirs() (10 سال پیش)
0 0
باز نشد؟ (10 سال پیش)
+1 0
شما متغییر database رو initial نکردید یا اول یکبار پرش کنید یا به این شکل تغییر بدید SQLiteDatabase.openOrCreateDatabase (10 سال پیش)
0 0
نمیشه این که عین کد استاد !؟!؟ چطور پرش کنم ؟ اینو کجا تغییر بدم (10 سال پیش)
+1 0
شبیه کد استاد نیست اتفاقا و مشکل شما هم همینجاست که دقت نکردی در پاسخ زیری دوستمون مثال رو زده این مثال رو دقیقا انجام بده (10 سال پیش)
0 0
اون رو که پایین گفته بودند زدم... اینم عکس کد رو گذاشتم . (10 سال پیش)
0 0
آقای محمد حسین کاشی زاده آیا این سوال منو پاسخ میدهید ؟ (10 سال پیش)
+1 0
خب همین دیگه دقت نمیکنی کجای کد شما با کدی که دوستمون مصطفی گذاشته یکی هست ؟ (10 سال پیش)
0 0
تفاوت کد من با کد استاد که عکسش رو گذاشتم میشه بگید؟ (10 سال پیش)
0 0
من کدی رو که مصطفی گفته رو تغییر دادن ......زیرش هم گفتم که نشد !(rad ?باز نشد؟؟ ) (10 سال پیش)
+1 0
درسته حق با شماست ، من فکر کردم باید از روی SQLiteDatabase یک نمونه داشته باشیم و متد مورد نظر نیازبه نمونه داره ولی متد استاتیک هست و نیاز به نمونه گیری نداره . (10 سال پیش)
0 0
حق رو ول کن این چرا پس ایجاد نمیشه (10 سال پیش)
+1 0
یک بار کد مربوط به ایجاد دیتابیس رو کامنت کنید و پروژه رو اجرا کنید ببنید پروژه اجرا میشه یا نه . اگر نشه ینی مشکل از دیتابیس نیست و جای دیگه مشکل وجود داره ، شبیه به مشکل شما در این لینک هست . نوع ایمولیتر رو هم بگید که از کدوم استفاده میکنید جنی موشن یا AVD (10 سال پیش)
0 0
اینکه اجرا میشه اصلا کامنت هم نکنم درست میاد بالا منظورم اینه که تو قسمت File Explorer mnt/sdcard ایجاد نمیشه (10 سال پیش)
+2 0
از جنی موشن استفاده میکنی ؟ یا از AVD ؟ (10 سال پیش)
0 0
جنی موشن (10 سال پیش)
+2 0
خب مسیر فایل رو دارید اشتباه میرید ، مسیر sd card در جنی موشن این هست : mnt->shell->emulated->0->yourFile (10 سال پیش)
0 0
ای خدا .بیین من چند روزه میگم پس چرا این دیتابیس ایجاد نمیشه .الان کلی برات لایک میزنم :) (10 سال پیش)
 برای این سوال 4 پاسخ وجود دارد.
پاسخ به سوال 
مصطفی   10 سال پیش
0 0

  1. شما باید از mkdirs() استفاده کنید
  2. به جای نوشتن این خط :
 database.openOrCreateDatabase(DIR_DATABASE+"/database.sqlite",null);

باید از این خط استفاده کنید:

   database = SQLiteDatabase.openOrCreateDatabase(DIR_DATABASE+"/database.sqlite", null);
0 0
?باز نشد؟؟ (10 سال پیش)
0 0
اجازه دسترسی به اس دی کارت رو در منیفست اضافه کردین ؟ (10 سال پیش)
0 0
بله (10 سال پیش)
پاسخ به سوال 
rad  10 سال پیش
0 0

این ارور لوگ هست

08-24 11:46:52.877: E/memtrack(2174): Couldn't load memtrack module (No such file or directory)
08-24 11:46:52.877: E/android.os.Debug(2174): failed to load memtrack module: -2
08-24 11:46:53.833: E/cutils-trace(2195): Error opening trace file: No such file or directory (2)
08-24 11:46:53.873: E/memtrack(2195): Couldn't load memtrack module (No such file or directory)
08-24 11:46:53.873: E/android.os.Debug(2195): failed to load memtrack module: -2
08-24 11:46:54.293: E/OpenGLRenderer(2206): Getting MAX_TEXTURE_SIZE from GradienCache
08-24 11:46:54.297: E/OpenGLRenderer(2206): MAX_TEXTURE_SIZE: 8192
08-24 11:46:54.305: E/OpenGLRenderer(2206): Getting MAX_TEXTURE_SIZE from Caches::initConstraints()
08-24 11:46:54.305: E/OpenGLRenderer(2206): MAX_TEXTURE_SIZE: 8192

اینم فایل  Log

0 0
هنوز منتظر چشم بر اهم که جوابی برسه (10 سال پیش)
0 0
کلاس G رو توی منیفست تعریف کردی؟ (10 سال پیش)
0 0
منم این مشکلو داشتم البته یادم نیس چه اروری میداد ولی عین کد استادو میزدم جواب نمیداد!!! شاید باورت نشه ولی فقط یه پروژه جدید باز کردم و همون کد رو کپی پیست کردم درست شد!!!! (10 سال پیش)
0 0
کلاس G رو هم معرفی کردم (10 سال پیش)
0 0
شاید باورت نشه منم یه پروژه جدید باز کردم نشد (!!!) (10 سال پیش)
0 0
هنوز منتظرم (10 سال پیش)
0 0
import android.R.string; دقیقا برای چیه ؟؟ (10 سال پیش)
0 0
؟ ! ؟ (10 سال پیش)
0 0
جالبه من وقتی کدتون رو با ویرایشاتی که گفته ام امتحان کردم درست کار می کرد. (10 سال پیش)
0 0
android:name=".G"---------------------------------------- (10 سال پیش)
0 0
android:name=".G"-- (10 سال پیش)
0 0
(10 سال پیش)
0 0
از این بدشانسی ها منم زیاد داشتم ، با اندروید استادیو امتحان کن !!!!! (10 سال پیش)
0 0
؟اندروید استادیو؟؟با این این همه مشکل و مسلئه اون دیگه بین چی به روزگارمون میاره (10 سال پیش)
0 0
اگه میتونید فایل لوگ رو گذاشتم بینید گیرش کجاست (10 سال پیش)
0 0
آقای محمد حسین کاشی زاده عزیز آیا این سوال منو پاسخ میدهید ؟ (10 سال پیش)
پاسخ به سوال 
h.k.m  9 سال پیش
0 0

من هم همین مشکلو دارم

کلاً فایل دیتا بیس ساخته نمیشه و از خط زیر خطا میگیره:

database= SQLiteDatabase.openOrCreateDatabase(DIR_DATABASE+"/database1.sqlite",null );
+1 0
سلام ، مطمئنید ساخته نمیشه ؟ شاید مسیر فایل ساخته شده رو اشتباه میرید . بالا جواب داده شده که اگه از جنی موشن استفاده میکنید مسیر اینه mnt->shell->emulated->0->yourFile . پاسخ آقا مصطفی رو هم بخونید . (9 سال پیش)
0 0
سلام..ممنونم که پاسخ دادی..با اندروید استادیو کارمیکنم..تنظیمات م همونایی که استاد گفتن انجام دادم..توضیح ارور اینه: E: FATAL EXCEPTION: main Process: com.hamid.learn.database, PID: 4854 java.lang.RuntimeException: Unable to create application com.android.tools.fd.runtime.BootstrapApplication: android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database این مسیری م که گفتید اصلا فولدر shell وجود نداره (9 سال پیش)
0 0
تو android device monitor هم یه لاگی انداخته که میگه: Adb connection Error:An existing connection was forcibly closed by the remote host (9 سال پیش)
0 0
خط های بالاتر لاگکت اندروید استادیو : (14) cannot open file at line 31278 of [2ef4f3a5b1] E: (14) os_unix.c (2) open(/storage/emulated/0/database-test//database1.SQLite) - E: Failed to open database '/storage/emulated/0/database-test//database1.SQLite'. android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database (9 سال پیش)
+1 0
مسیری که گفتم مال genyMotion بود . شما داری از ایمولیتور خود اندروید استفاده میکنی . مسیرش هم خودش گفته : storage/emulated/0/database-test فکر میکنم فایل ساخته شده چون داره میگه فایل فلان در مسیر فلان رو نمیتونه باز کنه ، حالا چرا ... !!! (9 سال پیش)
0 0
دقیقاً همین مسیر رو میرم ولی فایلی ساخته نشده..اینم کد کلاسG: package com.hamid.learn.database; import android.app.Application; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.os.Environment; import java.io.File; public class G extends Application { public static Context context; public static SQLiteDatabase database; public static final String DIR_SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath(); public static final String DIR_DATABASE = DIR_SDCARD + "/database-test/"; @Override public void onCreate() { super.onCreate(); context = this.getApplicationContext(); new File(DIR_DATABASE).mkdirs(); database = SQLiteDatabase.openOrCreateDatabase(DIR_DATABASE + "/database1.sqlite", null); database.execSQL("CREATE TABLE IF NOT EXISTS person " + " (person_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE" + " , person_name TEXT, " + "person_family TEXT," + " person_age INTEGER)"); database.execSQL("INSERT INTO person (person_name,person_family,person_age) VALUES ('Ali', 'rahimi',20)"); } } (9 سال پیش)
پاسخ به سوال 
h.k.m  9 سال پیش
0 0

android manifest :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.hamid.learn.database">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<application
android:name=".G"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>

<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>

</manifest>

کلاس G :

package com.hamid.learn.database;

import android.app.Application;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Environment;

import java.io.File;

public class G extends Application {
public static Context context;
public static SQLiteDatabase database;
public static final String DIR_SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath();
public static final String DIR_DATABASE = DIR_SDCARD + "/database-test/";

@Override
public void onCreate() {
super.onCreate();
context = this.getApplicationContext();
new File(DIR_DATABASE).mkdirs();

database = SQLiteDatabase.openOrCreateDatabase(DIR_DATABASE + "/database1.sqlite", null);
database.execSQL("CREATE TABLE IF NOT EXISTS person " +
" (person_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE" +
" , person_name TEXT, " +
"person_family TEXT," +
" person_age INTEGER)");
database.execSQL("INSERT INTO person (person_name,person_family,person_age) VALUES ('Ali', 'rahimi',20)");
}

}
 gradle :
apply plugin: 'com.android.application'

android {
compileSdkVersion 25
buildToolsVersion "25.0.2"

defaultConfig {
applicationId "com.hamid.learn.database"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:25.1.1'
}

gradle project :

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'

// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}

allprojects {
repositories {
jcenter()
}
}

task clean(type: Delete) {
delete rootProject.buildDir
}
0 0
برنامه رو که run میکنم کرش میکنه و لاگایی که بالا گفتم و میندازه و از خط 22 ارور میگیره یعنی این خط: database = SQLiteDatabase.openOrCreateDatabase(DIR_DATABASE + "/database1.sqlite", null); (9 سال پیش)
+1 0
من همین کدهای شما رو اجرا کردم و فایل ساخته میشه و در sqlite manager نشون داده میشه . اندروید ایمولیتور شما چنده ؟ اگه 6 و یا بالاتره ، باید runtime permission بگیرید . (9 سال پیش)
0 0
اندروید ایمولیتور م 6 ... runtime permission چیجوری بگیرم؟ (9 سال پیش)
+1 0
لینک (9 سال پیش)
+1 0
ممنونم مهندس جان از اینکه وقت گذاشتی...منم کد ها رو با اندروید ایمولیتور 4.1 اجرا کردم و فایلها ساخته شد...خیلی عالی بود..باز هم ممنون..فقط اینکه علت ساخته نشدن فولدر با اندروید شش چیه؟؟؟ (9 سال پیش)
+1 0
خب ساختار اندروید در اندروید 6 در بعضی permission ها تغییر کرده ( جهت امنیت بیشتر کاربر ) . لینک رو ببینید توضیح داده . (9 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .