android使用cursor进行查询时程序闪退
 //创建数据库
    MyOpenHelper myHelper = new MyOpenHelper(ServerActivity.this);
    SQLiteDatabase db =myHelper.getReadableDatabase(); 
    insertDb();
    /*********************************************/
    //查询数据库
    MyOpenHelper dbHelper = new MyOpenHelper(ServerActivity.this);  
    //得到一个可写的数据库  
    SQLiteDatabase dbr =dbHelper.getReadableDatabase();  
    Cursor cursor = dbr.query("people", new String[]{"id","name","salary","phone"}, "id=?", new String[]{"0"}, null, null, null);
}
    数据库创建完成后,加入了
    Cursor cursor = dbr.query("people", new String[]{"id","name","salary","phone"}, "id=?", new String[]{"0"}, null, null, null);
}
    这句之后,程序就闪退了

2个回答

查看一下logcat1的错误日志,cursor是否为空,用完是否释放

查询语句是会有语法问题,错误的话会导致APP异常好。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
android studio 在查询获得cursor时,程序会直接闪退到初始页面

public String Getword() {//连接数据库,使用游标,得到单词 String english=null; helper = new PictureDataHelper(this); db = helper.getReadableDatabase(); Cursor cursor = db.query(null, new String[]{"Picture"}, null, null, null, null, null, null); if (cursor.moveToPosition(position)) { english = cursor.getString(2); position++; } return english; } 是不是可能因为我使用的是外部的数据库的原因,还是其他什么原因?

为什么运行查询和删除数据库时闪退?

MainActivity ``` package com.example.administrator.diary; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity { private Button mm_login,yk_login; static final String db_pass="passwordDB"; static final String tb_pass="passwordTB"; SQLiteDatabase db; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //调用创建数据库方法 CREATE(); //调用按钮监听器方法 init(); //游客跳转 yk_login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //为了跳转到日记界面,并实现日记功能 Intent YD=new Intent(MainActivity.this,DiaryActivity.class); startActivity(YD); } }); } //打开或创建数据库 public void CREATE(){ db = openOrCreateDatabase(db_pass, Context.MODE_PRIVATE, null); String createTable = " CREATE TABLE IF NOT EXISTS " + tb_pass + "(password_id VARCHAR (4) PRIMARY KEY)"; db.execSQL(createTable); } //获取activity_main的控件 public void init(){ mm_login=findViewById(R.id.but_mm_login); yk_login=findViewById(R.id.but_yk_login); //获取数据库数据项 Cursor cur=db.rawQuery("SELECT * FROM passwordTB",null); int amount=cur.getCount(); //数据库为0则表示没有密码存在数据库,密码跳转到注册密码界面,游客可直接登录日记界面 if (amount==0){ mm_login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //为了跳转到注册界面,并实现注册功能 Intent MR=new Intent(MainActivity.this,RegisterActivity.class); startActivity(MR); } }); yk_login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //为了跳转到日记界面,并实现日记功能 Intent YD=new Intent(MainActivity.this,DiaryActivity.class); startActivity(YD); } }); } else{//数据项不为0,则有密码已存在 mm_login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //为了跳转到密码输入界面,并实现密码输入功能 Intent MS=new Intent(MainActivity.this,SendActivity.class); startActivity(MS); } }); //游客按钮隐藏 yk_login.setVisibility(Button.INVISIBLE); } } } ``` 登录代码 ``` package com.example.administrator.diary; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class SendActivity extends AppCompatActivity { Button log; EditText onesend,twosend; static final String db_pass="passwordDB"; static final String tb_pass="passwordTB"; SQLiteDatabase db; String f_send; String s_send; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_send); //获取控件地址 log=findViewById(R.id.btn_log); onesend=findViewById(R.id.send); twosend=findViewById(R.id.resend); //获取密码 f_send = onesend.getText().toString(); s_send = twosend.getText().toString(); //打开或创建数据库 db=openOrCreateDatabase(db_pass, Context.MODE_PRIVATE,null); String createTable=" CREATE TABLE IF NOT EXISTS "+tb_pass+"(password VARCHAR (4))"; db.execSQL(createTable); //调用登录按钮方法 login(); } //对比输入密码和设置密码是否相同 private void check(){ //读取数据库中设置的密码 Cursor c=db.rawQuery("SELECT password FROM passwordTB",null); String p=c.getString(0); //判断是否相同 if (f_send.equals(p)&&s_send.equals(p)){ Toast.makeText(SendActivity.this,"登录成功",Toast.LENGTH_SHORT).show(); //判断相同后跳转到日记界面 Intent SD=new Intent(SendActivity.this,DiaryActivity.class); startActivity(SD); } //不同提醒用户 else Toast.makeText(SendActivity.this,"密码输入不对,请重新输入",Toast.LENGTH_SHORT).show(); } //登录按钮功能 private void login(){ log.setOnClickListener(new View.OnClickListener() { @Override //监听器 public void onClick(View v) { //调用检验密码方法 check(); } }); } } ``` 删除数据库代码 ``` package com.example.administrator.diary; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.Toast; public class DiaryActivity extends AppCompatActivity { private Button de; static final String db_pass="passwordDB"; static final String tb_pass="passwordTB"; SQLiteDatabase db; Cursor cursor; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_diary); //获取控件位置 de=findViewById(R.id.delete); //打开或创建数据库 db=openOrCreateDatabase(db_pass, Context.MODE_PRIVATE,null); String createTable=" CREATE TABLE IF NOT EXISTS "+tb_pass+"(password VARCHAR (4))"; db.execSQL(createTable); Ondelete(); } //删除密码按钮方法 private void Ondelete(){ de.setOnClickListener(new View.OnClickListener() { @Override //监听器 public void onClick(View v) { //删除数据表方法 String sql = "delete from passwordTB where id = 0"; db.execSQL(sql); Toast.makeText(DiaryActivity.this,"删除成功",Toast.LENGTH_SHORT).show(); } }); } } ``` 建表插表代码 ``` //打开或创建数据库 db=openOrCreateDatabase(db_pass, Context.MODE_PRIVATE,null); String createTable=" CREATE TABLE IF NOT EXISTS "+tb_pass+"(password VARCHAR (4))"; db.execSQL(createTable); compare(); zc(); } //添加新密码到数据库中 private void addData(String password){ ContentValues cv=new ContentValues(1); cv.put(" password",password); db.insert(tb_pass,null,cv); } ``` 闪退后报错 ``` 2020-02-04 17:22:49.787 15729-15729/com.example.administrator.diary E/SQLiteLog: (1) no such column: id 2020-02-04 17:22:49.787 15729-15729/com.example.administrator.diary D/AndroidRuntime: Shutting down VM 2020-02-04 17:22:49.788 15729-15729/com.example.administrator.diary E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.administrator.diary, PID: 15729 android.database.sqlite.SQLiteException: no such column: id (code 1 SQLITE_ERROR): , while compiling: delete from passwordTB where id = 0 at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:985) at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:592) at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:590) at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:61) at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:33) at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1802) at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1730) at com.example.administrator.diary.DiaryActivity$1.onClick(DiaryActivity.java:39) at android.view.View.performClick(View.java:6913) at android.view.View.performClickInternal(View.java:6890) at android.view.View.access$3200(View.java:792) at android.view.View$PerformClick.run(View.java:27158) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:209) at android.app.ActivityThread.main(ActivityThread.java:7021) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:486) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:872) ``` 程序可以运行,但点击登录按钮或删除按钮后都会返回到mainactivity的界面,再按一次登录或删除就崩溃了,而且还没有达到删除数据库的目的,有大神知道是哪里出问题了吗?

为什么点击文本查询单词就闪退

就是我把别人低版本的词典源代码原装复制过来结果一查单词就闪退,告诉我访问不了数据库。但是我把数据库已经复制过来了呀!下面是报错的地方 05-23 10:14:13.195: E/AndroidRuntime(5635): java.lang.NullPointerException 05-23 10:14:13.195: E/AndroidRuntime(5635): at com.example.nnnnn.Main.afterTextChanged(Main.java:91) 05-23 10:14:13.195: E/AndroidRuntime(5635): at android.widget.TextView.sendAfterTextChanged(TextView.java:7095) 05-23 10:14:13.195: E/AndroidRuntime(5635): at android.widget.TextView$ChangeWatcher.afterTextChanged(TextView.java:8743) 05-23 10:14:13.195: E/AndroidRuntime(5635): at android.text.SpannableStringBuilder.sendAfterTextChanged(SpannableStringBuilder.java:970) 05-23 10:14:13.195: E/AndroidRuntime(5635): at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:497) 05-23 10:14:13.195: E/AndroidRuntime(5635): at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:435) 05-23 10:14:13.195: E/AndroidRuntime(5635): at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:30) 05-23 10:14:13.195: E/AndroidRuntime(5635): at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:672) 05-23 10:14:13.195: E/AndroidRuntime(5635): at android.view.inputmethod.BaseInputConnection.commitText(BaseInputConnection.java:196) 05-23 10:14:13.195: E/AndroidRuntime(5635): at com.android.internal.widget.EditableInputConnection.commitText(EditableInputConnection.java:183) 05-23 10:14:13.195: E/AndroidRuntime(5635): at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:279) 05-23 10:14:13.195: E/AndroidRuntime(5635): at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:77) 05-23 10:14:13.195: E/AndroidRuntime(5635): at android.os.Handler.dispatchMessage(Handler.java:99) 05-23 10:14:13.195: E/AndroidRuntime(5635): at android.app.ActivityThread.main(ActivityThread.java:4928) 05-23 10:14:13.195: E/AndroidRuntime(5635): at java.lang.reflect.Method.invokeNative(Native Method) 05-23 10:14:13.195: E/AndroidRuntime(5635): at java.lang.reflect.Method.invoke(Method.java:511) 05-23 10:14:13.195: E/AndroidRuntime(5635): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) 05-23 10:14:13.195: E/AndroidRuntime(5635): at dalvik.system.NativeStart.main(Native Method) 点击之后报了这里错误: public void afterTextChanged(Editable s) { //查询错了 Cursor cursor=database.rawQuery("" + "select english as _id from t_words where english like ?", new String[] { s.toString() + "%" }); DictionaryAdapter dictionaryAdapter = new DictionaryAdapter(this, cursor, true); actvWord.setAdapter(dictionaryAdapter); } 有没有哪位大牛 教下我!谢谢

android 为啥父类不闪退,但我重新写了个子类后,程序闪退?

求教各位大神,下面的是我的一个ViewPager的安卓小程序,如大家所见现在这个android代码是能正常运行的,但当我将代码中所有父类 ”ViewPager“ 换成 子类 ”NoScrollViewPager“ 后,程序一打开就闪退。。。 为啥换了个子类就会闪退啊。。。 package com.example.testviewpagerandtabhost; public class MainActivity extends Activity { Context context = null; LocalActivityManager manager = null; ViewPager pager = null; TabHost tabHost = null; TextView t1,t2,t3; private int offset = 0;// 动画图片偏移量 private int currIndex = 0;// 当前页卡编号 private int bmpW;// 动画图片宽度 private ImageView cursor;// 动画图片 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); context = MainActivity.this; manager = new LocalActivityManager(this , true); manager.dispatchCreate(savedInstanceState); InitImageView(); initTextView(); initPagerViewer(); } /** * 初始化标题 */ private void initTextView() { t1 = (TextView) findViewById(R.id.text1); t2 = (TextView) findViewById(R.id.text2); t3 = (TextView) findViewById(R.id.text3); t1.setOnClickListener(new MyOnClickListener(0)); t2.setOnClickListener(new MyOnClickListener(1)); t3.setOnClickListener(new MyOnClickListener(2)); } /** * 初始化PageViewer */ private void initPagerViewer() { pager = ((ViewPager) findViewById(R.id.viewpage)); final ArrayList<View> list = new ArrayList<View>(); Intent intent = new Intent(context, A.class); list.add(getView("A", intent)); Intent intent2 = new Intent(context, B.class); list.add(getView("B", intent2)); Intent intent3 = new Intent(context, C.class); list.add(getView("C", intent3)); pager.setAdapter(new MyPagerAdapter(list)); pager.setCurrentItem(0); pager.setOnPageChangeListener(new MyOnPageChangeListener()); } /** * 初始化动画 */ private void InitImageView() { cursor = (ImageView) findViewById(R.id.cursor); bmpW = BitmapFactory.decodeResource(getResources(), R.drawable.roller) .getWidth();// 获取图片宽度 DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int screenW = dm.widthPixels;// 获取分辨率宽度 offset = (screenW / 3 - bmpW) / 2;// 计算偏移量 Matrix matrix = new Matrix(); matrix.postTranslate(offset, 0); cursor.setImageMatrix(matrix);// 设置动画初始位置 } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } /** * 通过activity获取视图 * @param id * @param intent * @return */ private View getView(String id, Intent intent) { return manager.startActivity(id, intent).getDecorView(); } /** * Pager适配器 */ public class MyPagerAdapter extends PagerAdapter{ List<View> list = new ArrayList<View>(); public MyPagerAdapter(ArrayList<View> list) { this.list = list; } @Override public void destroyItem(ViewGroup container, int position, Object object) { ViewPager pViewPager = ((ViewPager) container); pViewPager.removeView(list.get(position)); } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } @Override public int getCount() { return list.size(); } @Override public Object instantiateItem(View arg0, int arg1) { ViewPager pViewPager = ((ViewPager) arg0); pViewPager.addView(list.get(arg1)); return list.get(arg1); } @Override public void restoreState(Parcelable arg0, ClassLoader arg1) { } @Override public Parcelable saveState() { return null; } @Override public void startUpdate(View arg0) { } } /** * 页卡切换监听 */ public class MyOnPageChangeListener implements OnPageChangeListener { int one = offset * 2 + bmpW;// 页卡1 -> 页卡2 偏移量 int two = one * 2;// 页卡1 -> 页卡3 偏移量 @Override public void onPageSelected(int arg0) { Animation animation = null; switch (arg0) { case 0: if (currIndex == 1) { animation = new TranslateAnimation(one, 0, 0, 0); } else if (currIndex == 2) { animation = new TranslateAnimation(two, 0, 0, 0); } break; case 1: if (currIndex == 0) { animation = new TranslateAnimation(0, one, 0, 0); } else if (currIndex == 2) { animation = new TranslateAnimation(two, one, 0, 0); } break; case 2: if (currIndex == 0) { animation = new TranslateAnimation(0, two, 0, 0); } else if (currIndex == 1) { animation = new TranslateAnimation(one, two, 0, 0); } break; } currIndex = arg0; animation.setFillAfter(true);// True:图片停在动画结束位置 animation.setDuration(300); cursor.startAnimation(animation); } @Override public void onPageScrollStateChanged(int arg0) { } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } } /** * 头标点击监听 */ public class MyOnClickListener implements View.OnClickListener { private int index = 0; public MyOnClickListener(int i) { index = i; } @Override public void onClick(View v) { pager.setCurrentItem(index); } }; public class NoScrollViewPager extends ViewPager { public NoScrollViewPager(Context context) { super(context); // TODO 自动生成的构造函数存根 } private boolean noScroll = false; public void setNoScroll(boolean noScroll) { this.noScroll = noScroll; } @Override public void scrollTo(int x, int y) { super.scrollTo(x, y); } @Override public boolean onTouchEvent(MotionEvent arg0) { /* return false;//super.onTouchEvent(arg0); */ if (noScroll) return false; else return super.onTouchEvent(arg0); } @Override public boolean onInterceptTouchEvent(MotionEvent arg0) { if (noScroll) return false; else return super.onInterceptTouchEvent(arg0); } @Override public void setCurrentItem(int item, boolean smoothScroll) { super.setCurrentItem(item, smoothScroll); } @Override public void setCurrentItem(int item) { super.setCurrentItem(item); } } }

Android程序在手机上运行崩溃但是在模拟器上能运行但是还有一个模拟器也是崩溃的

package darkhorse.english.app; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import android.app.Activity; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.View.OnClickListener; import android.widget.AutoCompleteTextView; import android.widget.CursorAdapter; import android.widget.ImageButton; import android.widget.TextView; public class LookupActivity extends Activity implements OnClickListener, TextWatcher { private final String DATABASE_PATH = android.os.Environment .getExternalStorageDirectory().getAbsolutePath() + "/dictionary"; private AutoCompleteTextView autocompletetextview; private final String DATABASE_FILENAME = "dictionary.db"; private SQLiteDatabase database; private ImageButton lookupbutton; private TextView textview; private ImageButton clearbutton; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.lookup_layout); database = openDatabase(); lookupbutton = (ImageButton) findViewById(R.id.lookupbutton); textview = (TextView) findViewById(R.id.textview); clearbutton = (ImageButton) findViewById(R.id.clearbutton); autocompletetextview = (AutoCompleteTextView) findViewById(R.id.autocompletetextview); lookupbutton.setOnClickListener(this); autocompletetextview.addTextChangedListener(this); clearbutton.setOnClickListener(new View.OnClickListener() { public void onClick(View arg0) { // TODO Auto-generated method stub autocompletetextview.setText(""); textview.setText(""); } }); } public class DictionaryAdapter extends CursorAdapter { private LayoutInflater layoutInflater; @Override public CharSequence convertToString(Cursor cursor) { return cursor == null ? "" : cursor.getString(cursor.getColumnIndex("_id")); } private void setView(View view, Cursor cursor) { TextView tvWordItem = (TextView) view; tvWordItem.setText(cursor.getString(cursor.getColumnIndex("_id"))); } @Override public void bindView(View view, Context context, Cursor cursor) { setView(view, cursor); } @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { View view = layoutInflater.inflate(R.layout.word_list_item, null); setView(view, cursor); return view; } public DictionaryAdapter(Context context, Cursor c, boolean autoRequery) { super(context, c, autoRequery); layoutInflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); } } public void afterTextChanged(Editable s) { // 必须将English字段的别名设为_id Cursor cursor = database.rawQuery( "select english as _id from t_words where english like ?", new String[] { s.toString() + "%" }); DictionaryAdapter dictionaryAdapter = new DictionaryAdapter(this, cursor, true); autocompletetextview.setAdapter(dictionaryAdapter); } public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub } public void onClick(View view) { String sql = "select chinese from t_words where english=?"; Cursor cursor = database.rawQuery(sql, new String[] { autocompletetextview.getText().toString() }); String result = "未找到该单词."; // 如果查找单词,显示其中文的意思 if (cursor.getCount() > 0) { // 必须使用moveToFirst方法将记录指针移动到第1条记录的位置 cursor.moveToFirst(); result = cursor.getString(cursor.getColumnIndex("chinese")); } // 显示查询结果对话框 textview.setText(result); } private SQLiteDatabase openDatabase() { try { // 获得dictionary.db文件的绝对路径 String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME; File dir = new File(DATABASE_PATH); // 如果/sdcard/dictionary目录中存在,创建这个目录 if (!dir.exists()) dir.mkdir(); // 如果在/sdcard/dictionary目录中不存在 // dictionary.db文件,则从res\raw目录中复制这个文件到 // SD卡的目录(/sdcard/dictionary) if (!(new File(databaseFilename)).exists()) { // 获得封装dictionary.db文件的InputStream对象 InputStream is = getResources().openRawResource( R.raw.dictionary); FileOutputStream fos = new FileOutputStream(databaseFilename); byte[] buffer = new byte[8192]; int count = 0; // 开始复制dictionary.db文件 while ((count = is.read(buffer)) > 0) { fos.write(buffer, 0, count); } fos.close(); is.close(); } // 打开/sdcard/dictionary目录中的dictionary.db文件 SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase( databaseFilename, null); return database; } catch (Exception e) { } return null; } } 求高手给看看

rawQuery 参数问题求解

``` cursor = db.rawQuery("select * from 库存 where 产品号=1 and 仓库号='ck01'",null); cursor.moveToFirst(); lw1 = cursor.getColumnIndex("库存量"); do{ lw2 = cursor.getInt(lw1); (int的lw2) Toast.makeText(RuKu.this,""+lw2,Toast.LENGTH_SHORT).show(); }while (cursor.moveToNext()); cursor.close(); ``` 上面的代码运行到 lw2 = cursor.getInt(lw1) 卡住,并且程序闪退 第一行RawQuery换成这个:cursor = db.rawQuery("select * from 库存 where 产品号=1 ",null); (把 仓库号=’ck01’ 去掉) 便可正常运行 求解!! 库存表: 仓库号 char(10) 产品号 int 库存量 int 仓库号 产品号 库存量 ck01 1 100 ck01 2 0 ck02 1 0 ck02 2 100 ck01 3 100 ck02 3 100 我想只读取到一个int库存量

运行 SQLite 数据库后程序崩溃

我设计的是查询数据库后下面的程序段返回一个数组。但是现在运行下面的程序时,奔溃了 //info 是类型数据中对象的名字 info.open(); String[] data = info.queryAll(); info.close(); 数据库代码部分,我想检索某一列中所有数据库的行 public String[] queryAll() { String[] columns = new String[] { KEY_NAME }; Cursor cursor = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null); if (cursor != null) { try { final int nameColumnIndex = cursor.getColumnIndex(KEY_NAME); List<String> names = new ArrayList<String>(); while (cursor.moveToNext()) { names.add(cursor.getString(nameColumnIndex)); } return names.toArray(new String[names.size()]); } finally { cursor.close(); } } return null; } 是因为数据库刚开始是空的吗? LOGCAT 04-23 22:26:47.780: E/AndroidRuntime(2825): FATAL EXCEPTION: main 04-23 22:26:47.780: E/AndroidRuntime(2825): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.contactlist/com.example.contactlist.Contacts}: android.database.sqlite.SQLiteException: no such table: mycontacts (code 1): , while compiling: SELECT Contact_name FROM mycontacts 04-23 22:26:47.780: E/AndroidRuntime(2825): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) 04-23 22:26:47.780: E/AndroidRuntime(2825): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 04-23 22:26:47.780: E/AndroidRuntime(2825): at android.app.ActivityThread.access$600(ActivityThread.java:130) 04-23 22:26:47.780: E/AndroidRuntime(2825): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 04-23 22:26:47.780: E/AndroidRuntime(2825): at android.os.Handler.dispatchMessage(Handler.java:99) 04-23 22:26:47.780: E/AndroidRuntime(2825): at android.os.Looper.loop(Looper.java:137) 04-23 22:26:47.780: E/AndroidRuntime(2825): at android.app.ActivityThread.main(ActivityThread.java:4745) 04-23 22:26:47.780: E/AndroidRuntime(2825): at java.lang.reflect.Method.invokeNative(Native Method) 04-23 22:26:47.780: E/AndroidRuntime(2825): at java.lang.reflect.Method.invoke(Method.java:511) 04-23 22:26:47.780: E/AndroidRuntime(2825): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 04-23 22:26:47.780: E/AndroidRuntime(2825): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 04-23 22:26:47.780: E/AndroidRuntime(2825): at dalvik.system.NativeStart.main(Native Method) 04-23 22:26:47.780: E/AndroidRuntime(2825): Caused by: android.database.sqlite.SQLiteException: no such table: mycontacts (code 1): , while compiling: SELECT Contact_name FROM mycontacts 04-23 22:26:47.780: E/AndroidRuntime(2825): at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 04-23 22:26:47.780: E/AndroidRuntime(2825): at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:882) 04-23 22:26:47.780: E/AndroidRuntime(2825): at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:493) 04-23 22:26:47.780: E/AndroidRuntime(2825): at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 04-23 22:26:47.780: E/AndroidRuntime(2825): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 04-23 22:26:47.780: E/AndroidRuntime(2825): at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37) 04-23 22:26:47.780: E/AndroidRuntime(2825): at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44) 04-23 22:26:47.780: E/AndroidRuntime(2825): at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1314) 04-23 22:26:47.780: E/AndroidRuntime(2825): at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1161) 04-23 22:26:47.780: E/AndroidRuntime(2825): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1032) 04-23 22:26:47.780: E/AndroidRuntime(2825): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1200) 04-23 22:26:47.780: E/AndroidRuntime(2825): at com.example.contactlist.DBContact.queryAll(DBContact.java:97) 04-23 22:26:47.780: E/AndroidRuntime(2825): at com.example.contactlist.Contacts.onCreate(Contacts.java:38) 04-23 22:26:47.780: E/AndroidRuntime(2825): at android.app.Activity.performCreate(Activity.java:5008) 04-23 22:26:47.780: E/AndroidRuntime(2825): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 04-23 22:26:47.780: E/AndroidRuntime(2825): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) 04-23 22:26:47.780: E/AndroidRuntime(2825): ... 11 more

SQLite在查询数据库运行崩溃

这是我创建的数据库 public class BlackNumberOpenHelper extends SQLiteOpenHelper { private static final String TAG = "BlackNumberOpenHelper"; /** * @param context */ public BlackNumberOpenHelper(Context context) { super(context, "blacknumber.db", null, 1); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("create table blacknumber (_id integer primary key autoincrement,number varchar(20),mode varchar(2))"); Log.i(TAG,"成功创建表"); }} 以下是我操作数据库的类 public class BlackNumberDao { private Context context; private BlackNumberOpenHelper helper; /** * 构造方法 * @param context */ public BlackNumberDao(Context context) { this.context = context; helper = new BlackNumberOpenHelper(context); } public List<BlackNumberInfo> findAll() { List<BlackNumberInfo> result = new ArrayList<BlackNumberInfo>(); SQLiteDatabase db = helper.getWritableDatabase(); Cursor cursor = db.query("blacknumber",new String[]{"number","mode"},null,null,null,null,null); while (cursor.moveToNext()) { BlackNumberInfo info = new BlackNumberInfo(); String number = cursor.getString(0); String mode = cursor.getString(1); info.setMode(mode); info.setNumber(number); result.add(info); } cursor.close(); db.close(); return result; }} 为什么一执行查询全部的操作就报android.database.sqlite.SQLiteException: no such table: blacknumber (code 1): , while compiling: SELECT number, mode FROM blacknumber。希望大家帮我看看到底我哪里错了啊。首先先谢谢大家了

autocomplete text view 不能运行的问题

当在程序的联系人列表中搜索联系人时,我想使用 autocompletetextview,但是成行执行不了。 Search.java: public class Search extends ListActivity { private static int[] TO = {R.id.name }; private static String[] FROM = {DbConstants.NAME, DbConstants.PHONE, DbConstants.EMAIL,_ID}; private Button sButton; private ListView lv1; private static SQLiteDatabase db; private DbCreate contacts; private Cursor cursor; private AutoCompleteTextView searchText; protected SimpleCursorAdapter adapter; protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.search); ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,new String[] {DbConstants.NAME}); searchText=(AutoCompleteTextView)findViewById(R.id.searchtext); searchText.setAdapter(adapter); sButton=(Button)findViewById(R.id.searchButton); sButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub showDatabaseContent(); lv1 = getListView(); lv1.setTextFilterEnabled(true); } }); } search.xml: <?xml version="1.0" encoding="utf-8" ?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> <AutoCompleteTextView android:id="@+id/searchtext" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:hint="@string/searchDefault"> <requestFocus /> </AutoCompleteTextView> <Button android:id="@+id/searchButton" android:icon="@drawable/search" android:text="Search" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> <TextView android:id="@android:id/empty" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/empt" /> <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearL ayout> 当我点击 search button 查找时会出错,其余时候都不出错。当我键入一个名称时也没有反应,问题出在哪里啊?

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

Java校招入职华为,半年后我跑路了

何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

@程序员:GitHub这个项目快薅羊毛

今天下午在朋友圈看到很多人都在发github的羊毛,一时没明白是怎么回事。 后来上百度搜索了一下,原来真有这回事,毕竟资源主义的羊毛不少啊,1000刀刷爆了朋友圈!不知道你们的朋友圈有没有看到类似的消息。 这到底是啥情况? 微软开发者平台GitHub 的一个区块链项目 Handshake ,搞了一个招募新会员的活动,面向GitHub 上前 25万名开发者派送 4,246.99 HNS币,大约价...

再不跳槽,应届毕业生拿的都比我多了!

跳槽几乎是每个人职业生涯的一部分,很多HR说“三年两跳”已经是一个跳槽频繁与否的阈值了,可为什么市面上有很多程序员不到一年就跳槽呢?他们不担心影响履历吗? PayScale之前发布的**《员工最短任期公司排行榜》中,两家码农大厂Amazon和Google**,以1年和1.1年的员工任期中位数分列第二、第四名。 PayScale:员工最短任期公司排行榜 意外的是,任期中位数极小的这两家公司,薪资...

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

华为初面+综合面试(Java技术面)附上面试题

华为面试整体流程大致分为笔试,性格测试,面试,综合面试,回学校等结果。笔试来说,华为的难度较中等,选择题难度和网易腾讯差不多。最后的代码题,相比下来就简单很多,一共3道题目,前2题很容易就AC,题目已经记不太清楚,不过难度确实不大。最后一题最后提交的代码过了75%的样例,一直没有发现剩下的25%可能存在什么坑。 笔试部分太久远,我就不怎么回忆了。直接将面试。 面试 如果说腾讯的面试是挥金如土...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

win10暴力查看wifi密码

刚才邻居打了个电话说:喂小灰,你家wifi的密码是多少,我怎么连不上了。 我。。。 我也忘了哎,就找到了一个好办法,分享给大家: 第一种情况:已经连接上的wifi,怎么知道密码? 打开:控制面板\网络和 Internet\网络连接 然后右击wifi连接的无线网卡,选择状态 然后像下图一样: 第二种情况:前提是我不知道啊,但是我以前知道密码。 此时可以利用dos命令了 1、利用netsh wlan...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

程序员写出这样的代码,能不挨骂吗?

当你换槽填坑时,面对一个新的环境。能够快速熟练,上手实现业务需求是关键。但是,哪些因素会影响你快速上手呢?是原有代码写的不够好?还是注释写的不够好?昨夜...

!大部分程序员只会写3年代码

如果世界上都是这种不思进取的软件公司,那别说大部分程序员只会写 3 年代码,恐怕就没有程序员这种职业。

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

HTTP与HTTPS的区别

面试官问HTTP与HTTPS的区别,我这样回答让他竖起大拇指!

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

终于懂了TCP和UDP协议区别

终于懂了TCP和UDP协议区别

Python爬虫,高清美图我全都要(彼岸桌面壁纸)

爬取彼岸桌面网站较为简单,用到了requests、lxml、Beautiful Soup4

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

Java岗开发3年,公司临时抽查算法,离职后这几题我记一辈子

前几天我们公司做了一件蠢事,非常非常愚蠢的事情。我原以为从学校出来之后,除了找工作有测试外,不会有任何与考试有关的事儿。 但是,天有不测风云,公司技术总监、人事总监两位大佬突然降临到我们事业线,叫上我老大,给我们组织了一场别开生面的“考试”。 那是一个风和日丽的下午,我翘着二郎腿,左手端着一杯卡布奇诺,右手抓着我的罗技鼠标,滚动着轮轴,穿梭在头条热点之间。 “淡黄的长裙~蓬松的头发...

大牛都会用的IDEA调试技巧!!!

导读 前天面试了一个985高校的实习生,问了他平时用什么开发工具,他想也没想的说IDEA,于是我抛砖引玉的问了一下IDEA的调试用过吧,你说说怎么设置断点...

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

不要再到处使用 === 了

我们知道现在的开发人员都使用 === 来代替 ==,为什么呢?我在网上看到的大多数教程都认为,要预测 JavaScript 强制转换是如何工作这太复杂了,因此建议总是使用===。这些都...

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

我说我懂多线程,面试官立马给我发了offer

不小心拿了几个offer,有点烦

立即提问
相关内容推荐