Android 在BaseAdapter getview中打开sqlite

Android 在BaseAdapter getview中打开sqlite,android,sqlite,android-listview,android-custom-view,Android,Sqlite,Android Listview,Android Custom View,我无法打开数据库。它不接受privateMode,。。。没有任何模式,它就有错误 12-12 22:32:44.405: ERROR/AndroidRuntime(1112): FATAL EXCEPTION: main android.database.sqlite.SQLiteException: unable to open database file at android.database.sqlite.SQLiteDatabase.dbopen(Nati

我无法打开数据库。它不接受privateMode,。。。没有任何模式,它就有错误

12-12 22:32:44.405: ERROR/AndroidRuntime(1112): FATAL EXCEPTION: main
        android.database.sqlite.SQLiteException: unable to open database file
        at android.database.sqlite.SQLiteDatabase.dbopen(Native Method)
        at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1849)
        at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:820)
        at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:854)
        at com.example.easyshopping.CustomAdapterUpdate$1.onClick(CustomAdapterUpdate.java:73)
        at android.view.View.performClick(View.java:2485)
        at android.view.View$PerformClick.run(View.java:9080)
        at android.os.Handler.handleCallback(Handler.java:587)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:123)
        at android.app.ActivityThread.main(ActivityThread.java:3683)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:507)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
        at dalvik.system.NativeStart.main(Native Method)
12-12 22:32:44.405:ERROR/AndroidRuntime(1112):致命异常:main
android.database.sqlite.SQLiteException:无法打开数据库文件
位于android.database.sqlite.SQLiteDatabase.dbopen(本机方法)
位于android.database.sqlite.SQLiteDatabase.(SQLiteDatabase.java:1849)
位于android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:820)
位于android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:854)
在com.example.easyshopping.CustomAdapterUpdate$1.onClick上(CustomAdapterUpdate.java:73)
在android.view.view.performClick上(view.java:2485)
在android.view.view$PerformClick.run(view.java:9080)
位于android.os.Handler.handleCallback(Handler.java:587)
位于android.os.Handler.dispatchMessage(Handler.java:92)
位于android.os.Looper.loop(Looper.java:123)
位于android.app.ActivityThread.main(ActivityThread.java:3683)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:507)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:839)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
在dalvik.system.NativeStart.main(本机方法)
CustomAdapterUpdate:

public class CustomAdapterUpdate extends BaseAdapter {
    LayoutInflater mInlfater;
    ArrayList<HashMap<String,String>> list;
    public CustomAdapterUpdate(Context context,ArrayList<HashMap<String,String>> list)
    {
        mInlfater = LayoutInflater.from(context);
        this.list =list;
    }
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return list.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        final ViewHolder holder;
        if(convertView ==null)
        {
            convertView = mInlfater.inflate(R.layout.updateapprow,null);
            holder = new ViewHolder();
            holder.b1 = (Button)convertView.findViewById(R.id.btnInsertToCart);
            holder.tv1 = (EditText)convertView.findViewById(R.id.updateQty);
            holder.tv2 = (TextView)convertView.findViewById(R.id.priceNewItem);
            holder.tv3 = (TextView)convertView.findViewById(R.id.nameNewItem);
            convertView.setTag(holder);

        }
        else
        {
            holder =(ViewHolder) convertView.getTag();
        }
        HashMap<String,String> map = list.get(position);

        holder.b1.setOnClickListener(new View.OnClickListener()
        {

            @Override
            public void onClick(View v) {

                      SQLiteDatabase database = openOrCreateDatabase("ORCL",null);
                        database.execSQL("CREATE TABLE IF NOT EXISTS CART(id integer primary key autoincrement,title VARCHAR(150),qty INT(10),price INT(10));");
                        database.execSQL("INSERT INTO CART(title,qty,price) VALUES('" + holder.tv3.getText().toString() + "'," + Integer.parseInt(holder.tv1.getText().toString())+","
                                + Integer.parseInt(holder.tv2.getText().toString())+");");

                        database.close();

            }
        });
        return convertView;
    }
    static class ViewHolder
    {
        Button b1;
        TextView tv2,tv3;
        EditText tv1;
    }
}
公共类CustomAdapterUpdate扩展BaseAdapter{
更平的水;
数组列表;
公共CustomAdapterUpdate(上下文、ArrayList列表)
{
mInlfater=LayoutInflater.from(上下文);
this.list=列表;
}
@凌驾
public int getCount(){
//TODO自动生成的方法存根
返回list.size();
}
@凌驾
公共对象getItem(int位置){
//TODO自动生成的方法存根
返回位置;
}
@凌驾
公共长getItemId(int位置){
//TODO自动生成的方法存根
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
//TODO自动生成的方法存根
最终持票人;
if(convertView==null)
{
convertView=MinlWater.inflate(R.layout.updateapprow,null);
holder=新的ViewHolder();
holder.b1=(按钮)convertView.findViewById(R.id.btnInsertToCart);
holder.tv1=(EditText)convertView.findViewById(R.id.updateQty);
holder.tv2=(TextView)convertView.findViewById(R.id.priceNewItem);
holder.tv3=(TextView)convertView.findViewById(R.id.nameNewItem);
convertView.setTag(支架);
}
其他的
{
holder=(ViewHolder)convertView.getTag();
}
HashMap map=list.get(位置);
holder.b1.setOnClickListener(新视图.OnClickListener()
{
@凌驾
公共void onClick(视图v){
SQLiteDatabase=openOrCreateDatabase(“ORCL”,null);
execSQL(“创建表,如果不存在CART(id整数主键自动递增,title VARCHAR(150),qty INT(10),price INT(10));”;
database.execSQL(“插入购物车(标题、数量、价格)值”(“+holder.tv3.getText().toString()+”,“+Integer.parseInt(holder.tv1.getText().toString())+”,”
+Integer.parseInt(holder.tv2.getText().toString())+“”;“”;
close()数据库;
}
});
返回视图;
}
静态类视窗夹
{
按钮b1;
文本视图tv2、tv3;
编辑文本tv1;
}
}
请帮助我如何在此处打开和插入数据。

试试这种方法

database=context.openOrCreateDatabase(“DatabaseName”,context.MODE_PRIVATE,null)

而且

Context context;

 public CustomAdapterUpdate(Context context,ArrayList<HashMap<String,String>> list)
    {
this.context=context;
        mInlfater = LayoutInflater.from(context);
        this.list =list;
    }
语境;
公共CustomAdapterUpdate(上下文、ArrayList列表)
{
this.context=context;
mInlfater=LayoutInflater.from(上下文);
this.list=列表;
}

谢谢

我照你说的做了,没用。它也不能接受私人模式