FoodAdditivesAppActivity.java向AccuratelySearch.java传值
输入框中输入的数值与获取的数值是正确的,
但是在数据库中搜索模糊搜查中文时,无法搜到。
查询数字和英文可以。
SQL语句:
sql = "Select name,norm From additive Where name Like '%" + value+ "%' ";
value为输入框中输入的数值,经log.e("value",value)检验传入值正确
数据库为SQLITE
输入框中输入的数值与获取的数值是正确的,
但是在数据库中搜索模糊搜查中文时,无法搜到。
查询数字和英文可以。
SQL语句:
sql = "Select name,norm From additive Where name Like '%" + value+ "%' ";
value为输入框中输入的数值,经log.e("value",value)检验传入值正确
数据库为SQLITE
解决方案 »
- 关于FragmentPagerAdapter.notifyDataSetChanged刷新页面无效果,貌似是个bug?求高手指导。。
- (急)关于android中sqlite3 模糊查询问题,懂数据库的大牛们快来啊
- android怎么点击屏幕就在屏幕上画一个半径为10的圆
- 使用cygwin下载android源码的问题
- 关于android导入图片运动R.drawable.xxx问题
- 有对listactivity 里id@android:list有深刻认识的高人么?
- 从win32项目移植到android时总是加载.tmx地图失败!!另外就是为什么我的.tmx文件夹放到别处总是打不开
- android开发的界面UI布局问题
- alertdialog.builder问题
- 为什么service没有restart的疑问
- 注册用户在记住账号和密码后怎样直接登陆
- 讨论一下这个左右滑动的控件的实现
各种编码都试过了
package com.Food.app;import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import android.app.Activity;import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.widget.ListView;
import android.widget.SimpleAdapter;public class AccuratelySearch extends Activity {
private SQLiteDatabase db;
private String sql, value,temp; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.classfyresult); db = SQLiteDatabase.openOrCreateDatabase(DBManager.DB_PATH + "/"
+ DBManager.DB_NAME, null);
value = (String) getIntent().getSerializableExtra("value");
try {
temp = new String (value.getBytes(),"UTF-8");
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
sql = "Select name,norm From additive Where name Like '%" +temp+ "%' ";
//检测传入的值
Log.e("sql", sql);
Cursor c = db.rawQuery(sql, null);
c.moveToFirst();
ArrayList<Map<String, Object>> data = new ArrayList<Map<String, Object>>();
Map<String, Object> item;
for (int i = 0; i < c.getCount(); i++) {
item = new HashMap<String, Object>();
try {
item.put("name", new String(c.getBlob(0), "GBK"));
item.put("norm", new String(c.getBlob(1), "GBK"));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
data.add(item);
c.moveToNext();
}
c.close();
db.close();
ListView mListView01 = new ListView(this);
SimpleAdapter adapter = new SimpleAdapter(this, data,
R.layout.classfyresult, new String[] { "name", "norm" },
new int[] { R.id.TextView01, R.id.TextView02 });
mListView01.setAdapter(adapter);
setContentView(mListView01); }
}
不过我上网查了一下
lz可以看一下
http://bbs.9ria.com/thread-16890-1-1.html
上面说sqlite汉字存储虽然是utf,但却是1个字6个字节,如果取的时候按6个字节取则会出乱码.
希望对lz有帮助
在adb shell中 用这个语句可以查出,但是在代码执行中查不到数据,我很蛋疼。然后网上搜了一下,有人这样说
------>查询语句改为"SELECT * FROM table WHERE column LIKE N'%内容%'",中文模糊查询成功!我试了一下,貌似不行。adb shell中不行,加N出错。代码中也是不行。