2017-02-18 2 views
1

это приложение Возможность запуска, однако он не может распечатать данные из базы данных, Я также не знаю, могут ли данные вставляться или нет.Начальный уровень SQLite Android App нет результата печати

Это MainActivity.java

package com.zikri.sqlitetuto3; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class MainActivity extends AppCompatActivity { 

EditText dataET; 
Button addB, delB; 
TextView dataTV; 
MyDBHandler dbHandler; 
String getProduct; 
Products products; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    startAndroidApp(); 
} 

public void startAndroidApp(){ 
    dbHandler = new MyDBHandler(this,null,null,1); 
    dataET = (EditText) findViewById(R.id.dataET); 
    addB = (Button) findViewById(R.id.addB); 
    delB = (Button) findViewById(R.id.delB); 
    dataTV = (TextView) findViewById(R.id.dataTV); 

    getProduct = dataET.getText().toString(); 

    PrintProduct(); 

    addB.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      AddProduct(getProduct); 
     } 
    }); 

    delB.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      DelProduct(getProduct); 
     } 
    }); 


} 

public void PrintProduct(){ 
    dataTV.setText(dbHandler.PrintProduct()); 
    dataET.setText(""); 
} 

public void AddProduct(String p){ 
    products = new Products(p); 
    dbHandler.AddProduct(products); 
    PrintProduct(); 
} 

public void DelProduct(String p){ 
    dbHandler.DelProduct(p); 
    PrintProduct(); 
    } 
} 

Это MyDBHandler.java

package com.zikri.sqlitetuto3; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 


public class MyDBHandler extends SQLiteOpenHelper { 

private static final int DATABASE_VERSION = 1; 
private static final String DATABASE_NAME = "products.db"; 
private static final String PRODUCT_TABLE = "product"; 
private static final String COL_ID = "id"; 
private static final String COL_PRODUCTNAME = "product_name"; 

public MyDBHandler(Context context, 
String name,SQLiteDatabase.CursorFactory factory, int version) { 
    super(context, name, factory, version); 
} 

@Override 
public void onCreate(SQLiteDatabase db){ 
    String query = "CREATE TABLE "+PRODUCT_TABLE+" ("+ 
        COL_ID+" INTEGER PRIMARY KEY AUTOINCREMENT, "+ 
        COL_PRODUCTNAME+" TEXT"+");"; 
    db.execSQL(query); 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){ 
    String query = "DROP IF EXIST "+PRODUCT_TABLE; 
    db.execSQL(query); 
    onCreate(db); 
} 

public void AddProduct(Products products){ 
    SQLiteDatabase db = getWritableDatabase(); 
    ContentValues values = new ContentValues(); 
    values.put(COL_PRODUCTNAME,products.get_productname()); 
    db.insert(PRODUCT_TABLE,null,values); 
    db.close(); 
} 

public void DelProduct(String product){ 
    SQLiteDatabase db = getWritableDatabase(); 
    String query = "DELETE FROM "+PRODUCT_TABLE+ 
        "WHERE "+COL_PRODUCTNAME+" = "+product+";"; 
    db.execSQL(query); 
    db.close(); 
} 

public String PrintProduct(){ 
    SQLiteDatabase db = getWritableDatabase(); 
    String printproductstring = ""; 
    String query = "SELECT * FROM "+PRODUCT_TABLE+";"; 
    Cursor cur = db.rawQuery(query,null); 

    cur.moveToFirst(); 

    while(cur.moveToNext()){ 
    printproductstring = 
    printproductstring+cur.getString(cur.getColumnIndex("product_name")); 
    printproductstring = printproductstring + "\n"; 
    } 
    db.close(); 
    return printproductstring; 
    } 
} 

Это Product.java

package com.zikri.sqlitetuto3; 

public class Products { 

private int _ID; 
private String _productname; 

public Products() {} 
public Products(String productname) { 
    this._productname = productname; 
} 

public void set_ID(int _ID) { 
    this._ID = _ID; 
} 
public int get_ID() { 
    return _ID; 
} 

public void set_productname(String _productname) { 
    this._productname = _productname; 
} 

public String get_productname() { 
    return _productname; 
} 

} 

это activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android= 
"http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_main" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.zikri.sqlitetuto3.MainActivity"> 

<EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:inputType="textPersonName" 
    android:ems="10" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:id="@+id/dataET" /> 

<Button 
    android:text="INSERT" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/dataET" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:id="@+id/addB" /> 

<Button 
    android:text="Delete" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/addB" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:id="@+id/delB" /> 

<TextView 
    android:text="TextView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerVertical="true" 
    android:layout_centerHorizontal="true" 
    android:id="@+id/dataTV" /> 

ответ

0

Вы должны принять вход, когда button является clicked иначе getProduct всегда будет пустым

addB.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      getProduct = dataET.getText().toString(); 
      // ^^^ fetch value when button is clicked 
      AddProduct(getProduct); 
     } 
    }); 

и сделать то же самое удаление

delB.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     getProduct = dataET.getText().toString(); 
     // ^^^ fetch value when button is clicked 
     DelProduct(getProduct); 
    } 
}); 

Кроме того, вы можете подтвердить успешное введение данные по return value от insert, который является long и определяется как

строка идентификатор вновь вставленной строки, или -1, если произошла ошибка

так использовать его

long id = db.insert(PRODUCT_TABLE,null,values); 
// you can now check the value of id through Logs or Toast 
db.close(); 
0

это очень трудно увидеть в базе данных андроид stoered или вы не можете видеть eror на logcate, если никакая ошибка не означает, что он хранится, но не каждый раз. Если вы хотите, чтобы все же вы должны видеть в менеджере девайса свое трудное другое решение, то один корневой мобильный и встроенный root brouser перейдите в папку android внутри папки android к dada внутри снова перейдите к данным, а затем имя пакета, затем базу данных, затем посмотрите, есть ли какой-либо файл, имя которого связано с вашей базой данных, скопируйте его в компьютер и загрузите sqllite brouser. этот долгий процесс, который вы можете сделать, получит 100% шанс получить файл базы данных. Если он создан

 Смежные вопросы

  • Нет связанных вопросов^_^