加个判断你放在哪里都可以。
插入时候先写个查询数据库方法,判断是否返回为空。。。。
if(null){
插入。。。
}else{
不插入。。。
}
或者。你程序是否有向导页。。那玩意一般都是只第一次运行时候会执行一次。。可以在执行向导页时候插入。或者你可以借鉴向导页的实现方法,来实现你的功能。第一次运行SharedPreferences 赋值为true ,之后判断为true就不执行插入。
有点多请耐心看完。
希望能帮助你,还请及时采纳谢谢。
一前言
android连接数据库的方式有两种,第一种是通过连接服务器,再由服务器读取数据库来实现数据的增删改查,这也是我们常用的方式。第二种方式是android直接连接数据库,这种方式非常耗手机内存,而且容易被反编译造成安全隐患,所以在实际项目中不推荐使用。
二准备工作
1加载外部jar包
在Android工程中要使用jdbc的话,要导入jdbc的外部jar包,因为在Java的jdk中并没有jdbc的api,我使用的jar包是mysql-connector-java-5118-binjar包,网络上有使用mysql-connector-java-5118-binjar包的,自己去用的时候发现不兼容,所以下载了比较新版本的,jar包可以去官网下载,也可以去百度,有很多前人们上传的。
2导入jar包的方式
方式一:
可以在项目的buildgradle文件中直接添加如下语句导入
compile files('libs/mysql-connector-java-5118-binjar')
方式二:下载jar包复制到项目的libs目录下,然后右键复制过来的jar包Add as libs
三建立数据库连接
protected void onCreate(Bundle savedInstanceState) {
superonCreate(savedInstanceState);
setContentView(Rlayoutactivity_jdbc);
new Thread(runnable)start();
}
Handler myHandler=new Handler(){
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
superhandleMessage(msg);
Bundle data=new Bundle();
data=msggetData();
//Systemoutprintln("id:"+dataget("id")toString()); //输出第n行,列名为“id”的值
Loge("TAG","id:"+dataget("id")toString());
TextView tv= (TextView) findViewById(Ridjdbc);
//Systemoutprintln("content:"+dataget("content")toString());
}
};
Runnable runnable=new Runnable() {
private Connection con = null;
@Override
public void run() {
// TODO Auto-generated method stub
try {
ClassforName("commysqljdbcDriver");
//引用代码此处需要修改,address为数据IP,Port为端口号,DBName为数据名称,UserName为数据库登录账户,Password为数据库登录密码
con =
//DriverManagergetConnection("jdbc:mysql://1921681202:3306/b2b", "root", "");
DriverManagergetConnection("jdbc:mysql://>
数据库中的文件的话,要adb shell进去查看数据库有没有该字段。存储卡上的文件的话,java中没有获取文件创建事件的接口。
一、 从resource中的raw文件夹中获取文件并读取数据(资源文件只能读不能写)
String res = "";
try{
InputStream in = getResources()openRawResource(Rrawbbi);
//在\Test\res\raw\bbitxt,
int length = inavailable();
byte [] buffer = new byte[length];
inread(buffer);
//res = EncodingUtilsgetString(buffer, "UTF-8");
//res = EncodingUtilsgetString(buffer, "UNICODE");
res = EncodingUtilsgetString(buffer, "BIG5");
//依bbitxt的编码类型选择合适的编码,如果不调整会乱码
inclose();
}catch(Exception e){
eprintStackTrace();
}
myTextViewsetText(res);//把得到的内容显示在TextView上
二、 从asset中获取文件并读取数据(资源文件只能读不能写)
String fileName = "yantxt"; //文件名字
String res="";
try{
InputStream in = getResources()getAssets()open(fileName);
// \Test\assets\yantxt这里有这样的文件存在
int length = inavailable();
byte [] buffer = new byte[length];
inread(buffer);
res = EncodingUtilsgetString(buffer, "UTF-8");
}catch(Exception e){
eprintStackTrace();
}
三、 从sdcard中去读文件,首先要把文件通过\android-sdk-windows\tools\adbexe把本地计算机上的文件copy到sdcard上去,adbexe push e:/Ytxt /sdcard/, 不可以用adbexe push e:\Ytxt \sdcard\ 同样: 把仿真器上的文件copy到本地计算机上用: adb pull /data/data/comtt/files/Testtxt e:/
String fileName = "/sdcard/Ytxt";
//也可以用String fileName = "mnt/sdcard/Ytxt";
String res="";
try{
FileInputStream fin = new FileInputStream(fileName);
//FileInputStream fin = openFileInput(fileName);
//用这个就不行了,必须用FileInputStream
int length = finavailable();
byte [] buffer = new byte[length];
finread(buffer);
res = EncodingUtilsgetString(buffer, "UTF-8");
finclose();
}catch(Exception e){
eprintStackTrace();
}
myTextViewsetText(res);
把手机上输入的账号密码保存到外部数据库:这个应该很多通用程序介绍的,无需我多说。
哪只手机注册账号密码只能在哪只手机上用在另外手机上账号密码无效:加入手机的系列号即可,具体读取手机系列号的算法,不同手机是不同的。
数据库很多,但是安卓直接支持的数据库只有sqlite一种。如果要使用其它的非本地数据库,你得建立连接,采用webservice或>
常量类:ConstantUtil
public class ConstantUtil {// 数据库名称
public static final String DATABASE_NAME = "user_managerdb";
// 数据库版本号
public static final int DATABASE_VERSION = 1;
//表名
public static final String TABLE_NAME = "user_info";
//字段名
public static final String USER_ID = "userId";
public static final String USER_NAME = "username";
public static final String USER_PASSWORD = "password";
public static final String USER_ADDRESS = "address";
}
自定义SQLiteOpenHelper:MySQLiteOpenHelper
public class MySQLiteOpenHelper extends SQLiteOpenHelper {// 定义一个SQLiteDatabase对象,对表进行相应的 *** 作
private SQLiteDatabase mDatabase;
public MySQLiteOpenHelper(Context context) {
super(context, ConstantUtilDATABASE_NAME, null,
ConstantUtilDATABASE_VERSION);
mDatabase = getWritableDatabase();
}
/
创建表
/
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
//sql语句
String sql = "create table " + ConstantUtilTABLE_NAME + "("
+ ConstantUtilUSER_ID + " integer primary key,"
+ ConstantUtilUSER_NAME + " text not null,"
+ ConstantUtilUSER_PASSWORD + " text not null,"
+ ConstantUtilUSER_ADDRESS + " text not null)";
dbexecSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
onCreate(db);
}
/
添加数据
@param cv
@return
/
public boolean insertData(ContentValues cv){
return mDatabaseinsert(ConstantUtilTABLE_NAME, null, cv)>0;
}
/
查询所有数据
@return
/
public List<Userinfo> queryData(){
List<Userinfo> userinfos=new ArrayList<Userinfo>();
//从数据库里查询数据
Cursor cursor=mDatabasequery(ConstantUtilTABLE_NAME, null, null, null, null, null, null);
if(cursor!=null){
//取出数据
while (cursormoveToNext()) {
Userinfo userinfo=new Userinfo();
userinfosetUserId(cursorgetInt(0));
userinfosetUsername(cursorgetString(1));
userinfosetPassword(cursorgetString(2));
userinfosetAddress(cursorgetString(3));
userinfosadd(userinfo);
}
}
return userinfos;
}
}
主Activity
public class MainActivity extends Activity {// 控件
private TextView txtName, txtPwd, txtAddress;
private EditText edtName, edtPwd, edtAddress;
private ListView mListView;
// 数据库对象
private MySQLiteOpenHelper mySQLiteOpenHelper;
private UserinfoAdapter adapter;
/ Called when the activity is first created /
@Override
public void onCreate(Bundle savedInstanceState) {
superonCreate(savedInstanceState);
setContentView(Rlayoutmain);
findView();
init();
}
private void findView() {
// TODO Auto-generated method stub
edtName = (EditText) findViewById(Ridid_edit1);
edtPwd = (EditText) findViewById(Ridid_edit2);
edtAddress = (EditText) findViewById(Ridid_edit3);
mListView = (ListView) findViewById(Ridid_listview);
}
private void init() {
// TODO Auto-generated method stub
mySQLiteOpenHelper = new MySQLiteOpenHelper(MainActivitythis);
}
public void onAction(View v) {
switch (vgetId()) {
case Ridid_btn_add:
//添加数据
String userName=edtNamegetText()toString();
String userPwd=edtPwdgetText()toString();
String userAdress=edtAddressgetText()toString();
//传入参数
ContentValues cv=new ContentValues();
//列名和值
cvput(ConstantUtilUSER_NAME, userName);
cvput(ConstantUtilUSER_PASSWORD, userPwd);
cvput(ConstantUtilUSER_ADDRESS, userAdress);
//得到结果
boolean flag=mySQLiteOpenHelperinsertData(cv);
if (flag) {
ToastmakeText(MainActivitythis, "添加记录成功", ToastLENGTH_SHORT)show();
} else {
ToastmakeText(MainActivitythis, "添加记录失败", ToastLENGTH_SHORT)show();
}
break;
case Ridid_btn_query:
//查询数据
List<Userinfo> userinfos=mySQLiteOpenHelperqueryData();
if (adapter!=null) {
adapter=null;
}
adapter=new UserinfoAdapter(userinfos);
mListViewsetAdapter(adapter);
break;
default:
break;
}
}
//数据适配器
class UserinfoAdapter extends BaseAdapter{
List<Userinfo> userinfos;
public UserinfoAdapter(List<Userinfo> _userinfos){
thisuserinfos=_userinfos;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return userinfossize();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return userinfosget(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
if(convertView==null){
convertView=LayoutInflaterfrom(MainActivitythis)inflate(Rlayoutlistview_item, null);
txtName=(TextView) convertViewfindViewById(Ridid_txt_name);
txtPwd=(TextView) convertViewfindViewById(Ridid_txt_pwd);
txtAddress=(TextView) convertViewfindViewById(Ridid_txt_address);
txtNamesetText(userinfosget(position)getUsername());
txtPwdsetText(userinfosget(position)getPassword());
txtAddresssetText(userinfosget(position)getAddress());
}
return convertView;
}
}
}
完整源码下载地址(附数据库文件查询软件+运行效果图):
在数据库中加一个字段,数据类型是时间日期,自动取值(服务器时间日期),比如ACCESS的“注册MDB”数据库/“注册”表/“TIME”字段的值:=now(),每当提交表单后写入数据库记录时,该条记录的字段"TIME"会自动被赋值当期服务器时间日期。
以上就是关于android 使用sqlitedatabase,使用的时候需要在数据库中加入数据(只执行一次),我想问的是,这个加数据的全部的内容,包括:android 使用sqlitedatabase,使用的时候需要在数据库中加入数据(只执行一次),我想问的是,这个加数据的、android怎么链接数据库mysql、Android中怎么获取系统时间并存入数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)