热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android中SQLite技术实例详解

Android和iOS的数据库都是用SQLite来实现.一,SQLite数据库简介:轻量级:SQLite数据库是一个轻量级的数据库,适用于少量数据的CURD;文件本质:SQL

Android和iOS的数据库都是用SQLite来实现.

一,SQLite数据库简介:

轻量级:SQLite数据库是一个轻量级的数据库,适用于少量数据的CURD;

文件本质:SQLite数据库支持大部分SQL语法,允许使用SQL语句操作数据库,其本质是一个文件,不需要安装启动。

数据读写:SQLite数据库打开只是一个文件的读写流。

二.简单的数据库语句知识

在android平台上,集成了一个嵌入式关系型数据库—SQLite,SQLite3支持NULL,INTEGER,REAL(浮点数字),TEXT(字符串文本)和BLOB(二进制对象)数据类型,实际上sqlite3也接受varchar(n),char(n),decimal(p,s)等数据类型,只不过在运算或保存时会转成对应的五种数据类型.

SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么。

今天我就用一个简单的列子来说明来实现SQLite。

实例代码:

import java.util.ArrayList;
import java.util.Iterator;

import com.hucc.huccgps.R;

import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

private static final String TAG = "JGPS/MainActivity";
private TextView mAdd_white = null;
private ListView mWhiteListView = null;
private Context mCOntext= null;

private int mPosition;
private DBHelper mDBHelper = null;
private WhiteListAdapter mAdapter = null;
private ArrayList mWhiteListItem = new ArrayList();

@Override
protected void onCreate(Bundle savedInstanceState) {
  Log.d("JGPS/Start", "onCreate");
  super.onCreate(savedInstanceState);
  setContentView(R.layout.relative_main);
  this.mDBHelper = new DBHelper(this);
  this.mCOntext= this;
  this.mWhiteListItem = new ArrayList();
  this.mWhiteListView = (ListView)findViewById(R.id.list_view);
  initData();
  this.mWhiteListView.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<&#63;> paramAdapterView, View paramView, 
        int paramInt, long paramLong) {
      Log.d("JGPS/MainActivity", ""+paramInt);
      MainActivity.this.updateWhiteList((Item)MainActivity.this.mWhiteListItem.get(paramInt));
    }
  });
  if (this.mAdd_white == null) 
    return;

  mAdd_white.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {
      MainActivity.this.addContactList();
    }
  });

  Log.d("JGPS/end", "onCreate");
}

private void initData() {
  this.mWhiteListItem = this.mDBHelper.getRelativesList();
  if (this.mWhiteListItem.size() != 3) {
    for (int i = 1; i <4; i++) {
      Log.d("JGPS/MainActivity", "initData,id=" + i);
      Item localItem1 = new Item();
      localItem1.setName("");
      localItem1.setNumber("");
      addItemToList(localItem1);
      updateSetting(i,"");        
    }
    this.mWhiteListItem = this.mDBHelper.getRelativesList();
  }
  Iterator localIterator = this.mWhiteListItem.iterator();
  while (localIterator.hasNext()) {
    Item localItem2 = (Item) localIterator.next();
    Log.d("JGPS/MainActivity", "initData,id=" + localItem2.getId() + ",name = " + localItem2.getName() + ",number=" + localItem2.getNumber());
  }
  this.mAdapter = new WhiteListAdapter(this, this.mWhiteListItem);
  this.mWhiteListView.setAdapter(mAdapter);
}

private void updateSetting(int id, String phoneNum) {
  switch (id) {
  case 1:
    putSting("phone_num1",phoneNum);
    break;
  case 2:
    putSting("phone_num2",phoneNum);
    break;
  case 3:
    putSting("phone_num3",phoneNum);
    break;
  default:
    Log.d("JGPS/MainActivity", "Wrong relative number id");
  }    
}

private void putSting(String paramString1, String paramString2) {
  SharedPreferences.Editor localEditor = getSharedPreferences("sos_config", 0).edit();
  localEditor.putString(paramString1, paramString2);
  localEditor.apply();
}

protected void updateWhiteList(Item paramItem) {
  final Item item = paramItem;
  Log.d("JGPS/MainActivity", "updateWhiteList------" + item.getId());
  final Dialog localDialog = new Dialog(this, R.style.dialog);
  localDialog.show();
  Window localWindow = localDialog.getWindow();
  localWindow.setContentView(R.layout.dialog_editor);
  Button localButton1 = (Button) localWindow.findViewById(R.id.btn_ok);
  Button localButton2 = (Button) localWindow.findViewById(R.id.btn_cancel);
  final EditText phOne= (EditText)localWindow.findViewById(R.id.phone);
  final EditText name = (EditText)localWindow.findViewById(R.id.name);
  name.setText(item.getName());
  phone.setText(item.getNumber());
  ((TextView)localWindow.findViewById(R.id.title)).setText(R.string.edit_white);
  localButton1.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View paramView) {
      if (phone.getText().toString().trim().length() == 0) {
        Toast.makeText(mContext, R.string.toast_tel, 2000).show();
        return;
      }
      if (name.getText().toString().trim().length() == 0) {
        Toast.makeText(mContext, R.string.name_null, 2000).show();
        return;
      }
      MainActivity.this.updateContactInDB(item.getId(), name.getText().toString(), phone.getText().toString());
      int id = Integer.parseInt(item.getId());
      updateSetting(id, phone.getText().toString());
      Toast.makeText(mContext, R.string.edit_success, 2000).show();
      localDialog.cancel();
    }
  });
  localButton2.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View paramView) {
      localDialog.cancel();
    }
  });
}

protected void updateContactInDB(String paramString1, String paramString2, String paramString3) {
  Item localItem = new Item();
  localItem.setId(paramString1);
  localItem.setName(paramString2);
  localItem.setNumber(paramString3);
  updateItemList(localItem);
}

private void updateItemList(Item paramItem) {
  Item localItem2;
  Iterator localIterator1 = this.mWhiteListItem.iterator();
  while (localIterator1.hasNext()) {
    localItem2 = (Item) localIterator1.next();
    if (localItem2.getId().equals(paramItem.getId())) {
      localItem2.setName(paramItem.getName());
      localItem2.setNumber(paramItem.getNumber());
      this.mDBHelper.updateRelativesItem(paramItem);
    }
  }

  Log.d("JGPS/MainActivity", "updateItemInList ---------");
  this.mAdapter = new WhiteListAdapter(this, this.mWhiteListItem);
  this.mWhiteListView.setAdapter(mAdapter);
}

private void addContactList() {
  final Dialog dialog = new Dialog(this, R.style.dialog);
  dialog.show();
  Window window = dialog.getWindow();
  window.setContentView(R.layout.dialog_editor);

  Button btn1 = (Button)window.findViewById(R.id.btn_ok); 
  Button btn2 = (Button)window.findViewById(R.id.btn_cancel); 
  final EditText phOne= (EditText)window.findViewById(R.id.phone);
  final EditText name = (EditText)window.findViewById(R.id.name);
  btn1.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {
      if (phone.getText().toString().trim().length() == 0)
      {

       Toast.makeText(mContext, R.string.toast_tel, 2000).show();
       return;
      }
      if (name.getText().toString().trim().length() == 0)
      {
       Toast.makeText(mContext, R.string.name_null, 2000).show();
       return;
      }
      if (MainActivity.this.mWhiteListItem.size()>3) {
        String str = MainActivity.this.getResources().getString(R.string.full1)+ " " + 3 + " " + MainActivity.this.getResources().getString(R.string.full2);
        Toast.makeText(mContext, str, 2000).show();
        dialog.cancel();
        return;
      }
      MainActivity.this.addContactToDB(name.getText().toString(),phone.getText().toString());
      dialog.cancel();
    }
  });
  btn2.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {
      dialog.cancel();
    }
  });
}

protected void deleteContactFromDB(String paramString) {
  updateContactInDB(paramString, "", "");
  Log.d("JGPS/MainActivity", "===addItemToList = "+paramString);
  int id = Integer.parseInt(paramString);
  updateSetting(id, paramString);
  Toast.makeText(this.mContext, R.string.delete_success, 2000).show();
}

@Override
protected void onStart() {
  Log.d("JGPS/MainActivity", "onStart()");
  super.onStart();
}

protected void startContactIntent(int paramInt) {
  Log.d("JGPS/MainActivity", "onClick " + paramInt);
  this.mPosition = paramInt;
  Intent localIntent = new Intent("android.intent.action.PICK");
  localIntent.setType("vnd.android.cursor.dir/phone_v2");
  startActivityForResult(localIntent, 100);
}

protected void addContactToDB(String paramString1, String paramString2) {
  Iterator localIterator = this.mWhiteListItem.iterator();

  while (localIterator.hasNext()) {
    if(((Item)localIterator.next()).getNumber().equals(paramString2)){
       Toast.makeText(mContext, R.string.replace, 2000).show();
       return;
     } 
  }
  Item localItem = new Item();
  localItem.setName(paramString1);
  localItem.setNumber(paramString2);
  addItemToList(localItem);
  Toast.makeText(mContext, R.string.replace, 2000).show();
}

private void addItemToList(Item localItem) {
  Log.d("JGPS/MainActivity", "addItemToList,name = " + localItem.getName() + ",number=" + localItem.getNumber());
  this.mDBHelper.addRelativesItem(localItem);
  this.mWhiteListItem = this.mDBHelper.getRelativesList();
  this.mAdapter = new WhiteListAdapter(this, this.mWhiteListItem);
  this.mWhiteListView.setAdapter(mAdapter);
}

public void startActivityForResult(Intent paramIntent, int paramInt)
{
 super.startActivityForResult(paramIntent, paramInt);
}

private class WhiteListAdapter extends BaseAdapter{

  private Context context;
  private LayoutInflater mInflater;
  private ArrayList listItem;

  public WhiteListAdapter(Context context1,
      ArrayList whiteListItem) {
    this.cOntext= context1;
    this.listItem = whiteListItem;
    this.mInflater = LayoutInflater.from(context);
  }

  public int getCount()
  {
    if ((this.listItem !=null) && (this.listItem.size() > 0)) {
      return 3;
    }
   return 0;
  }

  public Object getItem(int paramInt)
  {
   if ((this.listItem != null) && (this.listItem.size() > 0))
    return this.listItem.get(paramInt);
   return null;
  }

  public long getItemId(int paramInt)
  {
   return 0L;
  }

  @Override
  public View getView(int paramInt, View paramView, ViewGroup paramViewGroup) {
    Log.d("JGPS/MainActivity", "getView,position=" + paramInt + ",name=" + ((Item)this.listItem.get(paramInt)).getName() + ",num=" + ((Item)this.listItem.get(paramInt)).getNumber());
    if (paramView == null) {
      final ViewHolder localViewHolder = new ViewHolder();
      paramView = this.mInflater.inflate(R.layout.relative_list_item, null);
      localViewHolder.ivCall = (ImageView)paramView.findViewById(R.id.imageView_call);
      localViewHolder.ivDelete = (ImageView)paramView.findViewById(R.id.imageView_delete);
      localViewHolder.ivSelect = (ImageView)paramView.findViewById(R.id.recipients_picker);
      localViewHolder.txtView_name = (TextView)paramView.findViewById(R.id.txtView_name);
      localViewHolder.txtView_tel = (TextView)paramView.findViewById(R.id.txtView_number);

      paramView.setTag(localViewHolder);
      localViewHolder.position = paramInt;
      localViewHolder.ivSelect.setTag(localViewHolder);

      if ((this.listItem.get(paramInt)== null)|| 
          (((Item)this.listItem.get(paramInt)).getNumber() == null) 
          || (((Item)this.listItem.get(paramInt)).getNumber().equals(""))) {
        localViewHolder.ivCall.setVisibility(View.GONE);
        localViewHolder.ivSelect.setVisibility(View.VISIBLE);
        String str1 = MainActivity.this.getString(R.string.family_string);
        String str2 = str1 + (paramInt + 1) + ":";
        localViewHolder.txtView_name.setText(str2);
        localViewHolder.txtView_tel.setText(R.string.click_to_add);
      }else {
        localViewHolder.ivCall.setVisibility(View.VISIBLE);
        localViewHolder.ivSelect.setVisibility(View.GONE);
        localViewHolder.txtView_name.setText(((Item)this.listItem.get(paramInt)).getName());
        localViewHolder.txtView_tel.setText(((Item)this.listItem.get(paramInt)).getNumber());
      }

      localViewHolder.ivSelect.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View paramView) {
          MainActivity.WhiteListAdapter.ViewHolder localViewHolder = (MainActivity.WhiteListAdapter.ViewHolder)paramView.getTag();
          Log.d("JGPS/MainActivity", "getView,mPosition=" + MainActivity.this.mPosition);

          MainActivity.this.startContactIntent(localViewHolder.position);
        }
      });

      if ((!(((Item)this.listItem.get(paramInt)).getName().equals("")))
          || (!(((Item)this.listItem.get(paramInt)).getNumber().equals(""))))
      {
        localViewHolder.ivDelete.setVisibility(View.VISIBLE);
      }else {
      localViewHolder.ivDelete.setVisibility(View.GONE);
      }

      localViewHolder.ivCall.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View paramView) {
          Intent localIntent = new Intent("android.intent.action.CALL",
              Uri.parse("tel:" + ((Item)MainActivity.WhiteListAdapter.this.listItem.get(localViewHolder.position)).getNumber()));
          MainActivity.WhiteListAdapter.this.context.startActivity(localIntent);
        }
      });

      localViewHolder.ivDelete.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View paramView) {
         if(paramView.getId() != R.id.imageView_delete)
            return;
         final String str = ((Item)MainActivity.WhiteListAdapter.this.listItem.get(localViewHolder.position)).getId();     
         Log.d("JGPS/MainActivity", "delete item onClick,strId=" + str + ",position=" + localViewHolder.position);

         final Dialog localDialog = new Dialog(MainActivity.WhiteListAdapter.this.context, R.style.dialog);
         localDialog.show();
         Window localWindow = localDialog.getWindow();
         localWindow.setContentView(R.layout.dialog_delete);
         ((TextView)localWindow.findViewById(R.id.txtView_delete)).setText(MainActivity.WhiteListAdapter.this.context.getResources().getString(R.string.delete_one) 
             + "'" + ((Item)MainActivity.WhiteListAdapter.this.listItem.get(localViewHolder.position)).getName()
             + "'" + MainActivity.WhiteListAdapter.this.context.getResources().getString(R.string.delete_two));
         Button localButton1 = (Button) localWindow.findViewById(R.id.btn_ok);
         Button localButton2 = (Button) localWindow.findViewById(R.id.btn_cancel);
         localButton1.setOnClickListener(new OnClickListener() {

          @Override
          public void onClick(View paramView) {
            MainActivity.this.deleteContactFromDB(str);
            localDialog.cancel();
          }
        });
         localButton2.setOnClickListener(new OnClickListener() {

          @Override
          public void onClick(View paramView) {
            localDialog.cancel();
          }
        });
        }
      });

    }else {

    }

    return paramView;
  }

  public class ViewHolder{
    public ImageView ivCall;
     public ImageView ivDelete;
     public ImageView ivSelect;
     public int position;
     public TextView txtView_name;
     public TextView txtView_tel;
  }
}
}


import java.util.ArrayList;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DBHelper extends SQLiteOpenHelper {

public static final String TABLE_RELATIVES_COnTENT= "RelativesContent";
public static final int VERSION = 1; //版本
public static final String dbName = "SosDB"; //数据库的名字
public static Context mCOntext= null;
public SQLiteDatabase db = null;

public DBHelper(Context paramContext) {
  super(paramContext, "SosDB", null, 1);
  mCOntext= paramContext;
}

// 创建数据库表
@Override
public void onCreate(SQLiteDatabase paramSQLiteDatabase) {
  paramSQLiteDatabase.execSQL("create table RelativesContent(id integer primary key autoincrement,name text , number text)");
  closeDatabase();
}

private void closeDatabase() {
  if (this.db == null) 
    return;
  this.db.close();
}

@Override
public void onUpgrade(SQLiteDatabase paramSQLiteDatabase, int paramInt1, int paramInt2) {
  onCreate(paramSQLiteDatabase);
}

//查询方法
public ArrayList getRelativesList() {
  String idf = null;
  String namef = null;
  String numf = null;
  ArrayList localArrayList = new ArrayList();
  openDatabase();
  Cursor localCursor = this.db.query("RelativesContent", null, null, null, null, null, null);
  if(localCursor == null)
    return localArrayList;
  while (localCursor.moveToNext()) {
    Item localItem = new Item();
    idf = localCursor.getString(localCursor.getColumnIndex("id"));
    namef = localCursor.getString(localCursor.getColumnIndex("name"));
    numf = localCursor.getString(localCursor.getColumnIndex("number"));
    localItem.setId(idf);
    Log.d("JGPS/MainActivity", "dbid=" + idf);
    if ((namef == null) || ("".equals(namef))) {
      localItem.setName("");
    }else {
      localItem.setName(namef);
    }
    if ((numf == null) || ("".equals(numf))) {
      localItem.setNumber("");
    }else {
      localItem.setNumber(numf);
    }
    localArrayList.add(localItem);
  }    
  return localArrayList;
}

//写入数据
private void openDatabase() {
  this.db = super.getWritableDatabase();
}

//添加数据
public boolean addRelativesItem(Item localItem) {
  openDatabase();
  ContentValues localCOntentValues= new ContentValues();
  localContentValues.put("name", localItem.getName());
  localContentValues.put("number", localItem.getNumber());
  long l = this.db.insert("RelativesContent", null, localContentValues);
  closeDatabase();
  return (1<=0L);
}

//更新数据
public boolean updateRelativesItem(Item paramItem) {
  openDatabase();
  ContentValues localCOntentValues= new ContentValues();
  localContentValues.put("name", paramItem.getName());
  localContentValues.put("number", paramItem.getNumber());
  SQLiteDatabase localSQLiteDatabase = this.db;
  String[] arrayOfString = new String[1];
  arrayOfString[0] = paramItem.getId();
  long l = localSQLiteDatabase.update("RelativesContent", localContentValues, "id=&#63;", arrayOfString);
  closeDatabase();
  return (1 <= 0L);
}

}


import java.io.Serializable;

public class Item implements Serializable{

private String _id;
private String name;
private String number;

public Item() {
  // TODO Auto-generated constructor stub
}

public void Item(String paramString1, String paramString2, String paramString3)
 {
  this._id = paramString1;
  this.name = paramString2;
  this.number = paramString3;
 }

public String getId() {
  return _id;
}

public void setId(String paramString)
 {
  this._id = paramString;
 }

public String getName() {
  return name;
}

public void setName(String paramString)
 {
  this.name = paramString;
 }

public String getNumber() {
  return number;
}

public void setNumber(String paramString)
 {
  this.number = paramString;
 }  
 }

这是基本的数据程序。

XML

relative_main



  


  


dialog_editor

<&#63;xml version="1.0" encoding="utf-8"&#63;>

   



      
    
    
  
  
    
    
  

  
  
    

relative_list_item



  
  

"

 


    

dialog_delete




  
  
  
    

这是一个简单的demo,我这里就不详细说明数据库的细节了,对于已经很熟悉数据库的,可以查看android官网有说明的,

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


推荐阅读
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • MySQL 数据库基础学习 一、SQL的作用及分类 二、数据类型 三、存储引擎  (建库建表、数据插入等))
    MySQL 数据库基础学习 一、SQL的作用及分类 二、数据类型 三、存储引擎 (建库建表、数据插入等)) ... [详细]
  • 本博客基于android7.1版本分析,仅用于沟通学习使用上一篇博客介绍了android导出vCard联系人流程紧接着我们在这篇博客来看看它是如何导入一个vCard ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • Android源码中的Builder模式及其作用
    本文主要解释了什么是Builder模式以及其作用,并结合Android源码来分析Builder模式的实现。Builder模式是将产品的设计、表示和构建进行分离,通过引入建造者角色,简化了构建复杂产品的流程,并且使得产品的构建可以灵活适应变化。使用Builder模式可以解决开发者需要关注产品表示和构建步骤的问题,并且当构建流程发生变化时,无需修改代码即可适配新的构建流程。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • 带添加按钮的GridView,item的删除事件
    先上图片效果;gridView无数据时显示添加按钮,有数据时,第一格显示添加按钮,后面显示数据:布局文件:addr_manage.xml<?xmlve ... [详细]
author-avatar
倚栏听风
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有