怎样在一个类中 得到 数据库的 Context ? ? ? 我这样写 会得到吗? 可是还是报空指针。。。

[code="java"]

public class MovieService{
public static Context context1;

private DatabaseHelper dbHelper;
@SuppressWarnings("static-access")
public MovieService(Context context) {
    this.context1 = context;
    this.dbHelper = new DatabaseHelper(context1);
}

/**
 * 添加电影
 * @param movie
 */


public List<Movie> addOnline_All(Movie movie){
    List<Movie> list=new ArrayList<Movie>();
    SQLiteDatabase db = dbHelper.getWritableDatabase();
    db.execSQL("insert into Online_All (television,name,type,region,year,actor,num,link)values(?,?,?,?,?,?,?,?)", 
            new Object[]{movie.getTelevision(),movie.getName(),movie.getType(),movie.getRegion(),movie.getYear(),
            movie.getActor(),movie.getNum(),movie.getLink()});
    return list;
}

}

//下面这个类是 想数据库添加信息的方法 因为 因为是 将xml 里面的内容解析出来 然后放到一个集合里面 所以 下面这个类 是 遍历集合 然后想数据库添加

public class TraverseSet extends AsyncTask>, List>, List>>{
private String television;
private String name;
private String type;
private String region;
private String year;
private String actor;
private int numint;
private String link;
Context context = MovieService.context1;

public Context getContext() {
    return context;
}


protected List<Map<String, Object>> doInBackground(
        List<Map<String, Object>>... params) {

    System.out.println("进入  遍历集合。。。。。。。。。。。");
    List<Map<String,Object>> typenum = params[0]; 
    System.out.println("有值没有========"+typenum.size());

    for (Iterator<Map<String, Object>> typeiterator = typenum.iterator(); typeiterator.hasNext();) {

        System.out.println("进入  遍历====集合。。。。。。。。。。。");
        Map<String, Object> num = typeiterator.next();

        numint = (Integer) num.get("num");
        name = (String) num.get("name");
        type = (String) num.get("type");
        region = (String) num.get("region");
        actor = (String) num.get("actor");
        year = (String) num.get("year");
        link = (String) num.get("link");
        television = (String) num.get("television");

        System.out.println(" 遍历集合。。。。。完毕。。。开始向数据库中添加。。。");


        System.out.println("得到的television -------"+television+"------");
        System.out.println("得到的name -------"+name+"------");
        System.out.println("得到的type -------"+type+"------");
        System.out.println("得到的region -------"+region+"------");
        System.out.println("得到的year -------"+year+"------");
        System.out.println("得到的actor -------"+actor+"------");
        System.out.println("得到的num -------"+numint+"------");
        System.out.println("得到的link -------"+link+"------");

        /*  Context c = doInBackground("com.android.testpalyer.sql", Context.CONTEXT_INCLUDE_CODE | Context.CONTEXT_IGNORE_SECURITY);  
        //载入这个类  
        Class clazz = c.getClassLoader().loadClass("com.android.testpalyer.sql.MovieService");  
        //新建一个实例  
        Object owner = clazz.newInstance();  
        //获取print方法,传入参数并执行  
        Object obj = clazz.getMethod("addOnline_All", MovieService.class);*/

        MovieService ms = new MovieService(this.getContext());
        Movie movie = new Movie();
        movie.setName(name);
        System.out.println("get........."+movie.getName());
        movie.setActor(actor);
        movie.setLink(link);
        movie.setNum(numint);
        movie.setRegion(region);
        movie.setTelevision(television);
        movie.setType(type);
        movie.setYear(year);

        ms.addOnline_All(movie);

        System.out.println("添加数据完毕。。。。。"+ms);

    }
    return typenum;
}

}

[/code]

1个回答

你用的是数据源吗?

wanghuanqiufly
wanghuanqiufly Context是需要你获得的不应该自己去定义。
7 年多之前 回复
zhuyangyang123
zhuyangyang123 test 测试 里面是不是已经封装好了 Context 所以 不用定义 就可以写 MovieService ms = new MovieService(this.getContext()); 但是现在是要直接添加 但是 MovieService ms = new MovieService();里面要添加一个参数 就是Context 吧 ,但是这个类是自己写的 没有封装好Context 自己定义了一个 Context context; 但是这样定义的只是自己的什么都没有 所以 放进去 也是空的。。。我现在就是想怎样 能把信息添加进去。。。
7 年多之前 回复
zhuyangyang123
zhuyangyang123 我没这样写啊。。。。都看不懂了。。呵呵。。。 System.out.println("vvvvvvvvvvvvvvvvvvvvvv"+this.getContext()); MovieService ms = new MovieService(this.getContext()); 打印出来的 是空。。。所以信息添加不进去 你写的是什么意思?
7 年多之前 回复
wanghuanqiufly
wanghuanqiufly Context initCtx = new InitialContext(); Context ctx = (Context) initCtx.lookup("java:comp/env"); 你这样写是否能找到数据源?
7 年多之前 回复
zhuyangyang123
zhuyangyang123 嗯,是的!不过不管怎样我试了 好多 调 Context 的方法都不行。。。。因为 MovieService ms = new MovieService(this.getContext()); 这个 都没将数据库打开 也就添加不进去 在 test 里面 我也不清楚 this.getContext() 是怎么可以调出来的 但是 在不是测试的类里面 this.getontext() 如果不在类里面定义 失掉不出来的,但是自己定义 又是不能连接到 MovieService 里面的 所以 向里面添加数据一直报空指针。。。郁闷死了。。。
7 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问