首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL不创建表(或者先创建数据库?)

SQL不创建表(或者先创建数据库?)
EN

Stack Overflow用户
提问于 2012-12-06 10:16:21
回答 2查看 153关注 0票数 1

在logcat中,我有以下错误:

代码语言:javascript
复制
12-05 19:20:26.696: E/SQLiteDatabase(1415): Error inserting lon=5.25 lat=7.52 name=null
12-05 19:20:26.696: E/SQLiteDatabase(1415): android.database.sqlite.SQLiteException: no such table: position (code 1): , while compiling: INSERT INTO position(lon,lat,name) VALUES (?,?,?)

我尝试在名为: position的表中插入3个值: name、lat、lon。在代码中,我没有任何错误,应用程序也不会崩溃。我已经将该值的插入事件附加到带有onClickListener的按钮上(当用户按下该按钮时,插入该值)。

数据库创建的代码:

公共类listagpsdb { SQLiteDatabase mDb;DbHelper mDbHelper;Context mContext;私有静态最终字符串DB_NAME="listagps";私有静态最终int DB_VERSION=1;公共listagpsdb(上下文ctx){ mContext=ctx;mDbHelper=new DbHelper(ctx,DB_NAME,null,DB_VERSION);} public void (){ //il数据库su cuièleggibile/scrivibile mDb=mDbHelper.getWritableDatabase();} public mDb.close(){ mDb.close();} public void insertPosition(String name,double lat,double insertPosition){ ContentValues cv=new ContentValues();cv.put(PositionsMetaData.POSITIONS_NAME_KEY,name);cv=new lat);mDb.insert(PositionsMetaData.POSITIONS_TABLE,null,cv);}公共游标fetchProducts(){返回mDb.query(PositionsMetaData.POSITIONS_TABLE,null,null);}静态类PositionsMetaData {静态最终字符串POSITIONS_TABLE =“位置”;静态最终字符串ID = "_id";静态最终字符串POSITIONS_NAME_KEY =“名称”;静态最终字符串POSITIONS_LATITUDE_KEY = "lat";静态最终字符串POSITIONS_LONGITUDE_KEY = "lon";}私有静态最终字符串POSITIONS_TABLE_CREATE =“如果不存在创建表”+ PositionsMetaData.POSITIONS_TABLE + (“+ PositionsMetaData.ID+”整数主键自动递增、“+ PositionsMetaData.POSITIONS_NAME_KEY +”文本、“+ PositionsMetaData.POSITIONS_LATITUDE_KEY +”双null);“+ PositionsMetaData.POSITIONS_LONGITUDE_KEY + "double null”;;私有类DbHelper扩展了SQLiteOpenHelper {公共DbHelper(上下文、字符串名称、CursorFactory工厂、int版本){超级(上下文、名称、工厂、版本);} @Override (SQLiteDatabase _db) { _db.execSQL(POSITIONS_TABLE_CREATE);@覆盖公共无效onUpgrade(SQLiteDatabase _db,int oldVersion,int newVersion) {} }

在您看到的代码中,我只希望在创建数据库时才创建表。

这是活动类的代码:

代码语言:javascript
复制
@Override
    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_navi);



                Button SalvaLocation = (Button) findViewById(R.id.SalvaLocation);
                final listagpsdb db = new listagpsdb(getApplicationContext());
                SalvaLocation.setOnClickListener(new View.OnClickListener() {

                    public void onClick(View view) {



                    db.open(); 

                    String name = null;
                    Double lat = 7.52;
                    Double lon = 5.25;
                    db.insertPosition(name, lat, lon);

                    db.close();

                    }
                });

现在我不明白为什么没有创建数据库/表。有谁有主意吗?,如果数据库是创建的,那么在AVD内存中有一个窍门要看吗?

谢谢大家都想帮我!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-06 10:58:03

PositionsMetaData.POSITIONS_LATITUDE_KEY更新您的代码。

代码语言:javascript
复制
private static final String POSITIONS_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS"  
                + PositionsMetaData.POSITIONS_TABLE + " (" 
                + PositionsMetaData.ID+ " integer primary key autoincrement, "
                + PositionsMetaData.POSITIONS_NAME_KEY + " text, "
                + PositionsMetaData.POSITIONS_LATITUDE_KEY + " double not null,"
                + PositionsMetaData.POSITIONS_LONGITUDE_KEY + " double not null);";
票数 2
EN

Stack Overflow用户

发布于 2012-12-06 10:22:10

是的,如果数据库已经创建,您可以看到它!

Window -> show view -> File Explorer ..。

在那里去data -> data -> your package name-> and Database -> Your db

之后,您可以使用SQL打开数据库和文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13741385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档