【问题标题】:Creating data base do not work Android / Android Studio [duplicate]创建数据库不起作用Android / Android Studio [重复]
【发布时间】:2016-07-30 10:55:20
【问题描述】:

刚开始使用android并尝试创建简单的数据库。

这是我的代码:

FoodMacrosTable.java
public class FoodMacrosTable {

public static final String DB_NAME = "FoodDatabase.db";
public static final int DB_VERSION = 1;

public class FoodMacros implements BaseColumns {

    public static final String TABLE_NAME = "FoodMacros";


    public static final String FOOD_NAME = "Food name";
    public static final String FOOD_PROTEIN = "Amount of protein in 100g";
    public static final String FOOD_CARBS = "Amount of carbs in 100g";
    public static final String FOOD_FATS = "Amount of fats in 100g";
    public static final String FOOD_CALORIES = "Amount of calories in 100g";
    public static final String FOOD_VIT_A = "% of daily needs in 100g";

    public final String[] TABLE_COLUMNS = {FOOD_NAME,FOOD_PROTEIN,FOOD_CARBS,FOOD_FATS,FOOD_CALORIES,
            FOOD_VIT_A};

}

}

HealthyDbHanbler.java

public class HealthyDbHandler extends SQLiteOpenHelper {

public HealthyDbHandler(Context context){
    super(context,FoodMacrosTable.DB_NAME,null,FoodMacrosTable.DB_VERSION);
}

@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
    String createTable = "CREATE TABLE " + FoodMacrosTable.FoodMacros.TABLE_NAME + " ( " +
            FoodMacrosTable.FoodMacros._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
            FoodMacrosTable.FoodMacros.FOOD_NAME + " TEXT NOT NULL, " +
            FoodMacrosTable.FoodMacros.FOOD_PROTEIN + " TEXT NOT NULL, " +
            FoodMacrosTable.FoodMacros.FOOD_CARBS + " TEXT NOT NULL, " +
            FoodMacrosTable.FoodMacros.FOOD_FATS + " TEXT NOT NULL, " +
            FoodMacrosTable.FoodMacros.FOOD_CALORIES + " TEXT NOT NULL, " +
            FoodMacrosTable.FoodMacros.FOOD_VIT_A + " TEXT NOT NULL );";

    sqLiteDatabase.execSQL(createTable);


}

@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
    sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + FoodMacrosTable.FoodMacros.TABLE_NAME);
    onCreate(sqLiteDatabase);
}

public void addFood(Food food){
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values =  new ContentValues();
    values.put(FoodMacrosTable.FoodMacros.FOOD_NAME,food.getFOOD_NAME());
    values.put(FoodMacrosTable.FoodMacros.FOOD_PROTEIN,food.getFOOD_PROTEIN());
    values.put(FoodMacrosTable.FoodMacros.FOOD_CARBS,food.getFOOD_CARBS());
    values.put(FoodMacrosTable.FoodMacros.FOOD_FATS,food.getFOOD_FATS());
    values.put(FoodMacrosTable.FoodMacros.FOOD_CALORIES,food.getFOOD_CALORIES());
    values.put(FoodMacrosTable.FoodMacros.FOOD_VIT_A,food.getFOOD_VIT_A());

    db.insert(FoodMacrosTable.FoodMacros.TABLE_NAME,null,values);

    db.close();
}

}

MainActivity.java
public class MainActivity extends AppCompatActivity {

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

    HealthyDbHandler db = new HealthyDbHandler(this) ;
    Log.v("DBINFO","Database created");

}

}

这是我得到的错误: 下午 1:42:56 无法为调试器绑定到本地 8600 下午 1:42:56 已建立的连接被主机中的软件中止 java.io.IOException:已建立的连接被主机中的软件中止 在 sun.nio.ch.SocketDispatcher.write0(本机方法) 在 sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:51) 在 sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93) 在 sun.nio.ch.IOUtil.write(IOUtil.java:65) 在 sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471) 在 com.android.ddmlib.JdwpPacket.write(JdwpPacket.java:179) 在 com.android.ddmlib.Client.send(Client.java:654) 在 com.android.ddmlib.jdwp.JdwpAgent.send(JdwpAgent.java:92) 在 com.android.ddmlib.HandleHeap.sendREAQ(HandleHeap.java:349) 在 com.android.ddmlib.Client.requestAllocationStatus(Client.java:517) 在 com.android.ddmlib.DeviceMonitor.createClient(DeviceMonitor.java:573) 在 com.android.ddmlib.DeviceMonitor.openClient(DeviceMonitor.java:545) 在 com.android.ddmlib.DeviceMonitor.processIncomingJdwpData(DeviceMoni... (显示气球)

【问题讨论】:

  • 我建议先创建数据库(使用 SQLite 工具)并将其作为资产部署到您的应用程序中。更容易。
  • 接下来会尝试这个,但想先学习如何做到这一点
  • 错误提示 Android Studio 甚至无法启动您的应用。调试器不工作。

标签: java android sqlite android-studio


【解决方案1】:

此错误与 sqlite 甚至您的应用程序无关。

尝试重启Android Studio,adb server, 在您的设备中重新启用 USB 调试,或相关主题的内容(如果没有帮助) Eclipse DDMS error "Can't bind to local 8600 for debugger"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    相关资源
    最近更新 更多