安卓if (pwdDAO.getCount()==0)不执行直接跳到else是什么原因

package com.szu;

import com.szu.accountsoft.dao.PwdDAO;
import com.szu.accountsoft.model.Tb_pwd;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Register_Activity extends Activity {
private EditText password_1,password_2;
private Button sure,clear, back;

String password;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.register_activity);



    password_1 = (EditText) findViewById(R.id.password_1);
    password_2 = (EditText) findViewById(R.id.password_2);
    sure = (Button) findViewById(R.id.login_button);
    clear = (Button) findViewById(R.id.clear_Button);
    back = (Button) findViewById(R.id.back);

    setTitle("注册页面");


    sure.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub

            if(password_1.getText().toString().trim().equals(""))
            {
                Toast.makeText(Register_Activity.this, "密码不能为空", Toast.LENGTH_LONG).show();
            }
            else if(password_2.getText().toString().trim().equals("") || password_2.getText().toString().trim().equals(""))
            {
                Toast.makeText(Register_Activity.this, "密码不能为空", Toast.LENGTH_LONG).show();
            }
            else if(password_1.getText().length()<6)
            {
                Toast.makeText(Register_Activity.this, "密码长度最少为6", Toast.LENGTH_SHORT).show();
            }
            else if(password_2.getText().length()<6)
            {
                Toast.makeText(Register_Activity.this, "密码长度最少为6", Toast.LENGTH_SHORT).show();
            }
            else if(password_1.getText().toString().trim().equals(password_2.getText().toString().trim()))
            {

                password = password_1.getText().toString().trim();      
            Tb_pwd tb_pwd=new Tb_pwd(password);
              PwdDAO pwdDAO = new PwdDAO(Register_Activity.this);// 创建PwdDAO对象

            if (pwdDAO.getCount()==0)// 判断数据库中是否已经设置了密码
                {
                    pwdDAO.add(tb_pwd);// 添加用户密码
                    // 弹出信息提示
                Intent intent2 = new Intent(Register_Activity.this, MainActivity.class);// 创建Intent对象
                    Toast.makeText(Register_Activity.this, "注册成功!", Toast.LENGTH_SHORT).show();

                startActivity(intent2);
                    finish();

                }
            else 
            {   
            Toast.makeText(Register_Activity.this, "对不起,密码已存在!", Toast.LENGTH_SHORT).show();
            }


            }

            else
            {
                Toast.makeText(Register_Activity.this, "密码不匹配!", Toast.LENGTH_SHORT).show();
            }
        }
    });

    clear.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            password_1.setText("");
            password_2.setText("");
        }
    });

    back.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            finish();
        }
    });
}

}

getcount取的值不是0,或者丢出了异常

不是不执行,而是getcount判断以后不等于0,跑到else去了

int ret = -1;
if ( (ret = pwdDAO.getCount()) ==0 ){

}else{
}
//最后打印ret

已经用了try catch,还是不行,那个getcount的取值如果数据库里面不在就是用0
public long getCount() {
db = helper.getWritableDatabase();// 初始化SQLiteDatabase对象
Cursor cursor = db.rawQuery("select count(password) from tb_pwd;", null);// 获取密码信息的记录数
if (cursor.moveToNext())// 判断Cursor中是否有数据
{
return cursor.getLong(0);// 返回总记录数
}
return 0;// 如果没有数据,则返回0
}

String型默认值为NULL,不是0

cursor.getLong(0) 从数据库查询信息中往外取值,下标不是应该从1开始的么,怎么有getLong(0)呢,应该是getLong(1)吧。

还有给个小建议:

     if ( (pwdDAO.getCount()) ==0 ){
    }

像这种的,最好提前定义一个变量 将pwdDAO.getCount()返回值接收,然后再进行判断,这样不容易隐藏问题,要不有很多意外问题,出现后不利于查找。

    long retflag = pwdDAO.getCount();
     if ( retflag ==0 ){
    }

你可以debug一下,或者是打印出pwdDAO.getCount()的值是什么,然后再去做判断