无法在Sqlite数据库android中插入数据
以下代码用于向数据库中插入数据。
当应用程序启动时,将执行以下代码。
执行 RecentDBManager
后,当我从模拟器内存中 PULL
数据库时,它在 FavoriteScrip
表中显示没有记录。
当我在 setData
方法中记录 InsertStmt
时,它工作正常。 它显示
插入到FavoriteScrip(sym,cmp,chg)值('value1','value2','value3')
但它没有插入到表中...
在主类
rdbM = new RecentDBManager(CompanyView.this);
try {
if (!rdbM.checkDataBase()) {
rdbM.createDataBase();
}
rdbM.openDB();
rdbM.setData("value1");
rdbM.closeDB();
} catch (Exception e) {
throw new Error("ERROR in DB Access"+ e.toString());
}
RecentDBManager 类
public class RecentDBManager {
private DatabaseHelper dataHelper;
private SQLiteDatabase mDb;
private Context ctx;
private String DATABASE_PATH = "/data/data/com.mypackage/databases/";
private static String DATABASE_NAME = "ScripMasterDB";
private static String TABLE_NAME = "FavoriteScrip";
private String InsertStmt;
private static final int DATABASE_VERSION = 1;
private Cursor cur;
RecentDBManager(Context ctx) {
this.ctx = ctx;
dataHelper = new DatabaseHelper(ctx);
}
private static class DatabaseHelper extends SQLiteOpenHelper {
Context myContext = null;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
this.myContext = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w("DBHelper", "Upgrading database from version " + oldVersion
+ " to " + newVersion + ", which will destroy all old data");
onCreate(db);
}
}
public boolean checkDataBase() {
String myPath = DATABASE_PATH + DATABASE_NAME;
File f = new File(myPath);
return f.exists();
}
public void createDataBase() {
openDB();
try {
OutputStream myOutput = new FileOutputStream(DATABASE_PATH+ DATABASE_NAME);
if (mDb.isOpen())
mDb.close();
myOutput.flush();
myOutput.close();
} catch (Exception e) {
throw new Error("RecentDbManager Exception - " + e.getMessage());
}
}
public RecentDBManager openDB() throws SQLException {
mDb = dataHelper.getWritableDatabase();
return this;
}
public void setData(String value1, String value2, String value3) {
ContentValues cv = new ContentValues();
cv.put("sym", value1);
cv.put("dt_tm", "datetime()");
mDb.insert(TABLE_NAME, null, cv);
} catch (SQLiteException e) {
throw new Error("RecentDbManager Exception in inserting data"
+ e.getMessage());
}
}
public void closeDB() {
try {
mDb.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
编辑
我有一列包含当前日期时间。
因此查询的形式为 "insert into " + TABLE_NAME+ " (sym,dt_tm) values ('" + value1 + "',datetime())"
我尝试了
ContentValues cv = new ContentValues();
cv.put("sym", value1);
cv.put("dt_tm", "datetime()");
mDb.insert(TABLE_NAME, null, cv);
value1< /code> 列已插入表中,但未插入日期时间。可能是什么问题?
最终编辑
完成...我使用了以下内容:
Calendar date1 = Calendar.getInstance();
SimpleDateFormat dateformatter = new SimpleDateFormat(
"dd/MM/yyyy HH:mm:ss");
String currentdate = dateformatter.format(date1
.getTime());
并将 currentdate
作为第二个参数传递。
谢谢大家!!!!
任何帮助都将挽救生命!!!
Following code is used to insert data in the database.
When application is launched, following code is executed.
After RecentDBManager
is executed, when I PULL
database from emulator memory, it shows no record in FavoriteScrip
table.
When I logged InsertStmt
in setData
method, it works fine.
It shows
insert into FavoriteScrip(sym,cmp,chg) values ('value1','value2','value3')
but it is not getting inserted in table...
In main class
rdbM = new RecentDBManager(CompanyView.this);
try {
if (!rdbM.checkDataBase()) {
rdbM.createDataBase();
}
rdbM.openDB();
rdbM.setData("value1");
rdbM.closeDB();
} catch (Exception e) {
throw new Error("ERROR in DB Access"+ e.toString());
}
RecentDBManager class
public class RecentDBManager {
private DatabaseHelper dataHelper;
private SQLiteDatabase mDb;
private Context ctx;
private String DATABASE_PATH = "/data/data/com.mypackage/databases/";
private static String DATABASE_NAME = "ScripMasterDB";
private static String TABLE_NAME = "FavoriteScrip";
private String InsertStmt;
private static final int DATABASE_VERSION = 1;
private Cursor cur;
RecentDBManager(Context ctx) {
this.ctx = ctx;
dataHelper = new DatabaseHelper(ctx);
}
private static class DatabaseHelper extends SQLiteOpenHelper {
Context myContext = null;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
this.myContext = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w("DBHelper", "Upgrading database from version " + oldVersion
+ " to " + newVersion + ", which will destroy all old data");
onCreate(db);
}
}
public boolean checkDataBase() {
String myPath = DATABASE_PATH + DATABASE_NAME;
File f = new File(myPath);
return f.exists();
}
public void createDataBase() {
openDB();
try {
OutputStream myOutput = new FileOutputStream(DATABASE_PATH+ DATABASE_NAME);
if (mDb.isOpen())
mDb.close();
myOutput.flush();
myOutput.close();
} catch (Exception e) {
throw new Error("RecentDbManager Exception - " + e.getMessage());
}
}
public RecentDBManager openDB() throws SQLException {
mDb = dataHelper.getWritableDatabase();
return this;
}
public void setData(String value1, String value2, String value3) {
ContentValues cv = new ContentValues();
cv.put("sym", value1);
cv.put("dt_tm", "datetime()");
mDb.insert(TABLE_NAME, null, cv);
} catch (SQLiteException e) {
throw new Error("RecentDbManager Exception in inserting data"
+ e.getMessage());
}
}
public void closeDB() {
try {
mDb.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
EDIT
I have one column which contains current datetime.
So query is of the form "insert into " + TABLE_NAME+ " (sym,dt_tm) values ('" + value1 + "',datetime())"
I tried
ContentValues cv = new ContentValues();
cv.put("sym", value1);
cv.put("dt_tm", "datetime()");
mDb.insert(TABLE_NAME, null, cv);
value1
column is getting inserted into table but not datetime. What can be the problem?
Final edit
DONE... I used following :
Calendar date1 = Calendar.getInstance();
SimpleDateFormat dateformatter = new SimpleDateFormat(
"dd/MM/yyyy HH:mm:ss");
String currentdate = dateformatter.format(date1
.getTime());
and passed currentdate
as second parameter.
THNX ALL !!!!
ANY HELP WILL BE LIFE-SAVER !!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
尝试
。
try
.
尝试在插入语句的表名后面留一个空格:
Try leaving a blank space after tablename of your insert statement:
尝试使用 插入而不是原始查询
try using insert instead of raw query