Android数据库绑定,android如何绑定sqlite最新版本

1,android如何绑定sqlite最新版本1.自己写一个类继承自SqliteOpenHelper2.会实现SqliteOpenHelper的两个方法 onCreate与onUpgrade,google文档对两个回调方法的解释是创建数据库的时候调用与更新数据库的版本的时候调用3.Sqlite数据库主要是用来缓存应用的数据,而应用却是一直在更新版本 , 相应的数据的表的字段也会一直增加会改变或减少4.这个时候就需要控制数据库的版本,因为Sqlite数据库中的字段假设新版的应用里面设计的表是10个字段 , 而缓存却是之前缓存的只有9个字段的话,查询数据库之后的列然后取的值会出现空指针异常或报错5.所以android中引入了Sqlite数据库的版本,让应用的旧版数据库能够与新版的数据库的字段兼容1 。你可以通过在console里直接用命令select,这个需要你的工具里有sqlite(或者更高的版本sqlite3)2 。也可以写个小ap , 通过代码再在你的控件里show出来3 。把数据库导出来直接在你的桌面系统上看
2 , SQLiteDatabase和android连接问题这个不是错误,这个是表示你的应用正在前台运行 , 不必再次启动 。一般是指你没修改任何代码再次用eclipse run as 运行时会出现这个 。从logcat找错误 。安卓中要使用sqlite ,必须要写一个类集成SQLiteOpenHelper 比如:public class SQLiteDBHepler extends SQLiteOpenHelperprivate static final String TAG = "SQLiteDBHepler"; public SQLiteDBHepler(Context context) //这句话就回创建一个数据库,叫testsuper(context, "test.db", null, 12); }这个类有2个方法第一次创建数据库会执行里面的代码public void onCreate(SQLiteDatabase db) }//升级数据库的代码,根据构造函数的最后一个参数,现在是12 , 你改为13,就回执行onUpgrade的代码public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) }不懂可以再问,采纳吧!}【Android数据库绑定,android如何绑定sqlite最新版本】
3,android setAdapter怎么绑定数据leftMenuAdapter 是自定义的Adapter,你看看这个类中是不是写入了数据,还有这个和快捷键没有关系的,你按住ctrl , 然后点击leftMenuAdapter 可以进入这个类查看代码 。如果不懂leftMenuAdapter 的写法,你可以百度搜索BaseAdapter,进行对照 。/**** 重写arrayadapter**/ public class spinneradapter extends arrayadapter{ private int resourceid; public spinneradapter(context context, int textviewresourceid, list objects) { super(context, textviewresourceid, objects); this.resourceid = textviewresourceid; } public view getview(int position, view convertview, viewgroup parent) { product prod = getitem(position); linearlayout userlistitem = new linearlayout(getcontext()); textview tv1 = new textview(getcontext()); textview tv2 = new textview(getcontext()); // 判断 if (prod instanceof prod_level2) { tv1.settext(string.valueof(((prod_level2) prod) .getprod_level2_cd())); tv2.settext(((prod_level2) prod).getprod_level2_nm()); } else if (prod instanceof prod_level3) { tv1.settext(((prod_level3) prod).getprod_level3_cd() + ""); tv2.settext(((prod_level3) prod).getprod_level3_nm()); } else if (prod instanceof prod_level4) { tv1.settext(((prod_level4) prod).getprod_level4_cd() + ""); tv2.settext(((prod_level4) prod).getprod_level4_nm()); } else if (prod instanceof producted_type) { tv1.settext(((producted_type) prod).getproducted_type_cd() + ""); tv2.settext(((producted_type) prod).getproducted_type_nm()); } tv1.setvisibility(view.gone); userlistitem.addview(tv1); tv2.settextsize(20); tv2.settextcolor(color.black); userlistitem.addview(tv2); return userlistitem; } } /** * spinner的加载 * * @param list * :要加载的数据源 * @param sp * :加载控件 * @param context * :activity */ public void loadspinner(list list, spinner sp, context context) { spinneradapter adapter = new spinneradapter(context, android.r.layout.simple_spinner_item, list); adapter.setdropdownviewresource(android.r.layout.simple_spinner_dropdown_item); sp.setadapter(adapter); }
4 , android eclipse怎么连接mysql数据库首先下载连接mysql的jar包 导入工程用类似以下代码连接: public class DBHelper {public static final String url = "jdbc:mysql://127.0.0.1/student";public static final String name = "com.mysql.jdbc.Driver";public static final String user = "root";public static final String password = "123456";public Connection conn = null;public PreparedStatement pst = null;public DBHelper(String sql) {try {Class.forName(name);//指定连接类型conn = DriverManager.getConnection(url, user, password);//获取连接pst = conn.prepareStatement(sql);//准备执行语句} catch (Exception e) {e.printStackTrace();}}public void close() {try {this.conn.close();this.pst.close();} catch (SQLException e) {e.printStackTrace();}}}//调用样例sql = "select *from stuinfo";//SQL语句db1 = new DBHelper(sql);//创建DBHelper对象try {ret = db1.pst.executeQuery();//执行语句,得到结果集while (ret.next()) {String uid = ret.getString(1);String ufname = ret.getString(2);String ulname = ret.getString(3);String udate = ret.getString(4);System.out.println(uid + "\t" + ufname + "\t" + ulname + "\t" + udate );}//显示数据ret.close();db1.close();//关闭连接} catch (SQLException e) {e.printStackTrace();}android平台的数据库大多是用contentprovider进行封装的 。建议你看一下sdk文档中关于contentprovider的内容另外,建议你在sdk下的sample code当中找一个provider的例子参考一下 。下面来简单回答一下你提到的几个问题:1.这个数据库是个.txt还是像mysql那样的呀?android平台上的数据库对sql进行了一下封装和精简 。叫sqlite 。基本操作(查询 , 插入,更改删除)和sql一样 。当你的程序运行过一次之后 , 就会在你应用的“安装目录”下生成一个*.db的文件 。比如说你应用的包名是zhidao.baidu.com那么数据库文件就在下面的这个路径下/data/data/zhidao.baidu.com/databases/xxx.db文件名是你在contentprovider里指定的2.在哪里可以看到这个数据库和表里的内容呢?同时给你推荐一个叫sqlite browser的工具,你可以上网下一个 。windows版的和linux版的都有,可以很直观的看到db文件里的内容,既然你对mysql比较熟的话,这个就更不成问题了 。3.假如我的数据库类是db.java,然后别的有a.java、b.java、c.java什么的,怎么能关联起来呢?android平台上,如果你继承contentprovider写了一个类,用来操作数据库,那么你需要在androidmanifese.xml文件中声明这个数据库对这个数据库的声明有一个很重要的一点,就是它的authorities这个authorities就是你给这个新建的数据库所指定的一个虚拟的路径它的命名方式和包名的命名类似开发者需要保证它的唯一性其它的a.java,b.java,c.java可以通过你声明的这个路径来找到这个数据库哪怕a,b , c这几个文件是另外一个应用当中的文件,一样是可以访问的就像是你指定mysql数据的地址 , 不管你是在哪个php文件当中,你都可以尝试去访问这个mysql数据库先说这么多吧 。还是建议你先看一下sdk下的sample code里的例子,里面有很多基础的例子 。200分够多的?。?别忘了加分哈 ~o_o~5,请问Android怎样连接远程MySQL数据库Android客户端直接连接远程MySQL数据库的方法如下:String result = "";//首先使用NameValuePair封装将要查询的年数和关键字绑定ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();nameValuePairs.add(new BasicNameValuePair("year","1980"));//使用HttpPost封装整个SQL语句//使用HttpClient发送HttpPost对象tryHttpClient httpclient = new DefaultHttpClient();HttpPost httppost = new HttpPost("http://example.com/getAllPeopleBornAfter.php");httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));HttpResponse response = httpclient.execute(httppost);HttpEntity entity = response.getEntity();InputStream is = entity.getContent();}catch(Exception e)Log.e("log_tag", "Error in http connection "+e.toString());}//将HttpEntity转化为StringtryBufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);StringBuilder sb = new StringBuilder();String line = null;while ((line = reader.readLine()) != null)sb.append(line + "\n");}is.close();result=sb.toString();}catch(Exception e)Log.e("log_tag", "Error converting result "+e.toString());}//将String通过JSONArray解析成最终结果tryJSONArray jArray = new JSONArray(result);for(int i=0;i<jArray.length();i++)JSONObject json_data = http://www.lisdn.com/gkrj/shzs/jArray.getJSONObject(i);Log.i("log_tag","id: "+json_data.getInt("id")+", name: "+json_data.getString("name")+", sex: "+json_data.getInt("sex")+", birthyear: "+json_data.getInt("birthyear"));}}}catch(JSONException e)Log.e("log_tag", "Error parsing data "+e.toString());}虽然Android开发中可以直接连接数据库,但是实际中却不建议这么做,应该使用服务器端中转下完成 。没直接连接过数据库 。我是连接的servlet然后给它查询语句,servlet查询后以xml形式返回数据 。安卓用HttpClient连接servlet , HttpClient使用详情百度有 。用android程序去直连mysql数据库,觉得这样做不好,出于安全等方面考虑 。数据库地址 , 用户名密码,查询sql什么的都存在程序里,很容易被反编译等方法看到 。建议把表示层和数据层逻辑分开,数据层对应网页的表示层提供接口,同时在为android手机端提供一个接口 , 简介访问数据库,这接口可以2端都保持一致 , 比如xml+rpc或者json等等,android端也有现成的东西能直接用,既安全又省事 。android 链接mysql数据库实例:package com.hl;import java.sql.drivermanager;import java.sql.resultset;import com.mysql.jdbc.connection;import com.mysql.jdbc.statement;import android.app.activity;import android.os.bundle;import android.view.view;import android.view.view.onclicklistener;import android.widget.button;import android.widget.textview;public class androidmsql extends activity@overridepublic void oncreate(bundle savedinstancestate)super.oncreate(savedinstancestate);setcontentview(r.layout.main);button btn=(button)findviewbyid(r.id.btn);btn.setonclicklistener(new onclicklistener()@overridepublic void onclick(view v)sqlcon();}});}private void msettext(string str)textview txt=(textview)findviewbyid(r.id.txt);txt.settext(str);}private void sqlcon()tryclass.forname("com.mysql.jdbc.driver");} catch (exception e)e.printstacktrace();}trystring url ="jdbc:mysql://192.168.142.128:3306/mysql?user=zzfeihua&password=12345&useunicode=true&characterencoding=utf-8";//链接数据库语句connection conn= (connection) drivermanager.getconnection(url); //链接数据库statement stmt=(statement) conn.createstatement(resultset.type_scroll_sensitive,resultset.concur_updatable);string sql="select * from user";//查询user表语句resultset rs=stmt.executequery(sql);//执行查询stringbuilder str=new stringbuilder();while(rs.next())str.append(rs.getstring(1)+"\n");}msettext(str.tostring());rs.close();

    推荐阅读