- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
已经存储在数据库中的文本显示没有任何问题。但是新插入的数据没有显示。我认为“添加新文本不会显示任何内容,就好像没有执行插入操作一样。”。我不知道为什么它不起作用。请帮助...
我的 DatabaseHandler 类
public class databaseHandler extends SQLiteOpenHelper
{
private Context main_context;
private static String DB_PATH;
private static String DB_NAME = "word.sqlite";
private static String DB_TBL_BOOKS = "word";
private static String DB_TBL_SETTING = "setting";
private static final int DB_version = 1;
public static final String COLUMN_ID = "ID";
public static final String COLUMN_FIRST_NAME = "title";
public static final String COLUMN_LAST_NAME = "content";
private SQLiteDatabase db;
public databaseHandler(Context con)
{
super(con, DB_NAME, null, DB_version);
main_context = con;
DB_PATH = con.getCacheDir().getPath() + "/" +DB_NAME;
}
public void createDataBase() throws IOException {
boolean dbExist = checkDataBase();
if (dbExist) {
// do nothing - database already exist
} else {
// By calling this method and empty database will be created into
// the default system path
// of your application so we are gonna be able to overwrite that
// database with our database.
this.getReadableDatabase();
copyDB();
}
}
/**
* Check if the database already exist to avoid re-copying the file each
* time you open the application.
*
* @return true if it exists, false if it doesn't
*/
private boolean checkDataBase() {
SQLiteDatabase checkDB = null;
try {
String myPath = DB_PATH + DB_NAME;
checkDB = SQLiteDatabase.openDatabase(myPath, null,
SQLiteDatabase.OPEN_READONLY);
} catch (SQLiteException e) {
// database does't exist yet.
}
if (checkDB != null) {
checkDB.close();
}
return checkDB != null ? true : false;
}
@Override
public void onCreate(SQLiteDatabase db) {
String query;
query = "CREATE TABLE word (id INTEGER PRIMARY KEY NOT NULL , title VARCHAR, content VARCHAR DEFAULT null)";
db.execSQL(query);
Log.d("log","table Created");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
Log.w("tag", "Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS word");
onCreate(db);
}
private boolean db_exist() {
File f = new File(DB_PATH);
if (f.exists())
{
return true;
}
else
{
return false;
}
}
private boolean copyDB() {
try {
FileOutputStream out = new FileOutputStream(DB_PATH);
InputStream in =main_context.getAssets().open(DB_NAME);
byte[] buffer = new byte[1024];
int ch;
while ((ch = in.read(buffer)) > 0)
{
out.write(buffer , 0, ch);
}
out.flush();
out.close();
in.close();
return true;
} catch (Exception e) {
Log.i("amirmessage", "error in 84 -> " + e.toString());
return false;
}
}
public void open()
{
if (db_exist())
{
try {
File temp = new File(DB_PATH);
db =SQLiteDatabase.openDatabase(temp.getAbsolutePath() , null , SQLiteDatabase.OPEN_READWRITE);
}catch (Exception e) {
Log.i("amirmessage", "error in 100 -> " + e.toString());
}
}
else {
if (copyDB())
{
open();
}
}
}
@Override
public synchronized void close() {
db.close();
}
//---------
public List<HashMap<String , Object>> getresultOfSerach()
{
Cursor result = db.rawQuery("SELECT * FROM "+ DB_TBL_BOOKS ,null);
List<HashMap<String , Object>> all_data = new ArrayList<>();
try {
while ( result.moveToNext())
{
HashMap<String , Object> temp = new HashMap<>();
temp.put("id" , result.getString(0));
temp.put("content" , result.getString(2));
temp.put("title" , result.getString(1));
all_data.add(temp);
Log.d("update","Query: ");
}
} finally
{
result.close();
}
return all_data;
}
public void addcontent(String state, String title)
{
ContentValues cv = new ContentValues();
cv.put("content", state);
cv.put("title", title);
db = this.getWritableDatabase();
db.insert(DB_TBL_BOOKS,null,cv);
Toast.makeText(main_context,state+title , Toast.LENGTH_SHORT).show();
}
}
我的 Activity 插入代码在这里
public class addcontent extends AppCompatActivity
{
private databaseHandler db;
public String title1;
public String content;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_addcontent);
db = new databaseHandler(getBaseContext());
sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
EditText etcontent = (EditText)findViewById(R.id.editText);
EditText ettitle1 = (EditText)findViewById(R.id.editText2);
title1=ettitle1.getText().toString();
content=etcontent.getText().toString();
}
public void onbtnadd(View v)
{
db.open();
db.addcontent( content,title1);
db.close();
}
}
我显示信息的 MainActivity 代码在这里
public class Main2Activity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
private databaseHandler db;
private ListView resultListView;
private List<HashMap<String , Object>> resultsbooks;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(getBaseContext(),addcontent.class);
startActivity(i);
}
});
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
resultListView = (ListView) findViewById(R.id.catListview);
db = new databaseHandler(getBaseContext());
showresultOfSerarch();
}
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main2, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
if (id == R.id.nav_camera) {
// Handle the camera action
} else if (id == R.id.nav_gallery) {
} else if (id == R.id.nav_slideshow) {
} else if (id == R.id.nav_manage) {
} else if (id == R.id.nav_share) {
} else if (id == R.id.nav_send) {
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
public void onbtnfind()
{
resultListView.setAdapter(null);
String serachBy;
serachBy = "author";
String query =" ";
showresultOfSerarch();
}
public void showresultOfSerarch()
{
db.open();
resultsbooks = db.getresultOfSerach();
db.close();
String[] from = {"title","content"};
int[] to = {R.id.txttitle, R.id.txtcontent};
SimpleAdapter adp = new SimpleAdapter(
getBaseContext(), resultsbooks, R.layout.tbl_contest_row, from, to
);
resultListView.setAdapter(adp);
}
最佳答案
首先我想说的是,请遵循编码指南。
您没有准备显示插入“word”表中的数据。
您的数据插入逻辑工作正常。一旦您的数据被添加到“word”表中,请尝试读取值。您可以对读取值进行以下更改。
public void onbtnadd() {
db.open();
db.addcontent(content, title1);
Cursor cursor = db.getReadableDatabase().rawQuery("select * from word", null);
if (cursor.moveToFirst()) {
do {
// get all records inserted in 'word' table here
} while (cursor.moveToNext());
}
db.close();
}
关于java - 在 sqlite 数据库中插入信息不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44941359/
03-25 05:52:15.329 8029-8042/com.mgh.radio W/MediaPlayerNative: info/warning (703, 0) 03-25 05:52:15
我一直在 Internet 上到处寻找关于 FrameworkElementFactory 类的适当文档,但我似乎找不到有关它的适当教程或有用信息。 请问对这个问题了解更多的人可以给我更多的信息吗?这
我需要知道一个线程在进入等待状态之前如何将其ID发送到另一个线程。我想传递一个带有其ID的变量,但我不知道该怎么做。 最佳答案 如果只有一个线程及其父线程,则可以使用全局变量,因为它们在所有线程之间共
我正在尝试制作一个程序,该程序可以读取命令行上的所有单词,然后将其打印在新行上,而我想要做的是这样的: Some text: hello 但是相反,我得到了这样的东西: Some text: Hell
我有一个连接到rabbitmq服务器的python程序。当该程序启动时,它连接良好。但是当rabbitmq服务器重新启动时,我的程序无法重新连接到它,并留下错误“Socket已关闭”(由kombu产生
我正在设置CI / CD管道。部署步骤运行以下命令: kubectl apply -f manifest.yml --namespace kubectl rollout status Deploym
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 4 年前。 Improve this ques
这是我在文件上运行 svn info 时输出的一部分: Last Changed Author: [user] Last Changed Rev: 269612 Last Changed Date:
所以我正在构建这个音乐应用程序,到目前为止它只扫描 SD 卡内的特定文件夹。这将返回路径,然后播放它们。 几个小时前我得知android系统中有一个媒体文件数据库所以 我想知道这个媒体文件数据库是否存
我正在绘制树形图,并且想知道如何绘制树类的相对百分比,即 A组=100 B地=30 C地=50 D 地 =20 然后,在图中,应该添加: A 组“50%” B 组“15%” 等在其“Group X”标
我正在构建一个社交网站,我想知道如何在用户首次登录时显示交互式教程和信息。比如只有在第一次登录时,用户才会被要求在他们的个人资料中填写更多信息。我怎样才能通过 php 和 mysql 实现这一点?例子
我是 java servlet 的新手。我研究了一些关于 servlet 的代码,但我真的很想知道更多基本的东西以及它是如何工作的。我只是想知道什么类型的 Material /内容可以从 java s
我想知道是否有办法为 user_id、sender_user_id 和 recipient_user_id 提供 name 信息来自 this fiddle 中的模式. 我现在唯一能想到的办法就是做这
这是我存储2个大学生信息的源代码。我想从输入中获取每个人的姓名、姓氏、ID 和 5 分,然后在输出中显示它们。我在输出中显示分数时遇到问题。 请帮忙 #include using namespace
假设我有一张带有条形图的图像,如下所示: 我想提取条形图和标签的值,除了训练 ML 模型之外,还有其他方法吗? 我有一堆图像,我为其生成了图表和一些描述。我目前正尝试仅从我能够做到的描述中提取信息,但
有没有办法从 GKTurnBasedParticipant 对象中检索玩家的名字?似乎除了根据类引用的难看的 playerID 之外,没有办法显示有关游戏玩家的相关信息。还是我遗漏了什么? 谢谢...
我有一个随机抛出“KeyNotFoundException”的 C# Silverlight 应用程序。我不知道找不到什么 key 。这让我想到了两个问题: KeyNotFoundException
本文实例为大家分享了ios获取本地音频文件的具体代码,供大家参考,具体内容如下 获取本地音频文件地址: ?
下面为大家介绍利用SQL查询语句获取Mysql数据库中表的表名,表描述、字段ID、字段名、数据类型、长度、精度、是否可以为null、默认值、是否自增、是否是主键、列描述 1、查询表信息(表名/表
问题 有没有办法获取代码中使用属性的位置,或声明成员变量的位置? 我不是在寻找解决此问题的方法,只是寻求一个简单的答案,无论这在技术上是否可行。 一些背景信息 我已经定义了一个属性,该属性使用提供给属
我是一名优秀的程序员,十分优秀!