سلام دوستان
من می خوام یه برنامه ای رو بسازم که یک اسمی رو از کاربر بگریره و اون رو در دیتابیس ذخیره کنه!
کدهاشم نوشتم ولی نمی دونم کجای کار مشکل داره که وقتی رو دکمه ذخیره کلیک می کنم خطا می ده...
دوستان کمک کنن لطفا
این کد
MyDatabaseHelper.java
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class MyDatabaseHelper extends SQLiteOpenHelper
{
ContentValues cv;
public static final String DB_name="my_information.db";
public static final String TBL_name="information";
public static final String name="Name";
public MyDatabaseHelper(Context context) {
super(context, DB_name, null,1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE"+ TBL_name +
"("+ "Id INTEGER PRIMARY KEY AUTOINCREMENT,"+ name + " TEXT)" );
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS" +TBL_name);
onCreate(db);
}
public boolean insertData(String n)
{
SQLiteDatabase db = this.getWritableDatabase();
cv =new ContentValues();
cv.put(name,n);
long x= db.insert(TBL_name,null,cv);
db. close();
if(x==-1){
return false;
}
else return true;
}
}
اینم کد MainActivity.java
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
MyDatabaseHelper db;
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
db=new MyDatabaseHelper(this);
editText =(EditText) findViewById(R.id.editText);
}
public void btnSave(View view){
String info=editText.getText().toString();
if(info.length()<1){
editText.setHint("please Enter a Name");
return;
}
boolean f= db.insertData(info);
String m="";
if(f==true)
m ="اطلاعات ذخیره شد";
else
m="خطا";
Toast.makeText(MainActivity.this,m,Toast.LENGTH_LONG).show();
}
}
اینم خطایی که می ده:
08-13 10:46:47.540 14457-14457/com.example.davod.myapplication E/Database: Error inserting Name=da
android.database.sqlite.SQLiteException: no such table: information: , while compiling: INSERT INTO information(Name) VALUES(?);
at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:92)
at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:65)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:83)
at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:41)
at android.database.sqlite.SQLiteDatabase.compileStatement(SQLiteDatabase.java:1149)
at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1569)
at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1426)
at com.example.davod.myapplication.MyDatabaseHelper.insertData(MyDatabaseHelper.java:41)
at com.example.davod.myapplication.MainActivity.btnSave(MainActivity.java:32)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
at android.view.View.performClick(View.java:2485)
at android.view.View$PerformClick.run(View.java:9080)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3683)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
من می خوام یه برنامه ای رو بسازم که یک اسمی رو از کاربر بگریره و اون رو در دیتابیس ذخیره کنه!
کدهاشم نوشتم ولی نمی دونم کجای کار مشکل داره که وقتی رو دکمه ذخیره کلیک می کنم خطا می ده...
دوستان کمک کنن لطفا
این کد
MyDatabaseHelper.java
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class MyDatabaseHelper extends SQLiteOpenHelper
{
ContentValues cv;
public static final String DB_name="my_information.db";
public static final String TBL_name="information";
public static final String name="Name";
public MyDatabaseHelper(Context context) {
super(context, DB_name, null,1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE"+ TBL_name +
"("+ "Id INTEGER PRIMARY KEY AUTOINCREMENT,"+ name + " TEXT)" );
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS" +TBL_name);
onCreate(db);
}
public boolean insertData(String n)
{
SQLiteDatabase db = this.getWritableDatabase();
cv =new ContentValues();
cv.put(name,n);
long x= db.insert(TBL_name,null,cv);
db. close();
if(x==-1){
return false;
}
else return true;
}
}
اینم کد MainActivity.java
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
MyDatabaseHelper db;
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
db=new MyDatabaseHelper(this);
editText =(EditText) findViewById(R.id.editText);
}
public void btnSave(View view){
String info=editText.getText().toString();
if(info.length()<1){
editText.setHint("please Enter a Name");
return;
}
boolean f= db.insertData(info);
String m="";
if(f==true)
m ="اطلاعات ذخیره شد";
else
m="خطا";
Toast.makeText(MainActivity.this,m,Toast.LENGTH_LONG).show();
}
}
اینم خطایی که می ده:
08-13 10:46:47.540 14457-14457/com.example.davod.myapplication E/Database: Error inserting Name=da
android.database.sqlite.SQLiteException: no such table: information: , while compiling: INSERT INTO information(Name) VALUES(?);
at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:92)
at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:65)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:83)
at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:41)
at android.database.sqlite.SQLiteDatabase.compileStatement(SQLiteDatabase.java:1149)
at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1569)
at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1426)
at com.example.davod.myapplication.MyDatabaseHelper.insertData(MyDatabaseHelper.java:41)
at com.example.davod.myapplication.MainActivity.btnSave(MainActivity.java:32)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
at android.view.View.performClick(View.java:2485)
at android.view.View$PerformClick.run(View.java:9080)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3683)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)