欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

。java,

来源: javaer 分享于  点击 34816 次 点评:126

。java,


AddActivity.java内容

package com.example.shareingcontact;

import com.example.shareingcontact.db.ContactInfo;
import com.example.shareingcontact.db.Contacts;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Gallery;
import android.widget.ImageButton;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ImageView.ScaleType;
import android.widget.ViewSwitcher.ViewFactory;



public class AddActivity extends Activity implements ViewFactory {

	EditText et_name;
	EditText et_telePhone;
	EditText et_Phone;
	EditText et_nickname;
	EditText et_company;
	EditText et_address;

	Button btn_save;
	Button btn_return;
	
	int privacy;//用于判断添加的用户是不是保密的
	ImageButton imageButton;//头像按钮
	View imageChooseView;//图像选择的视图
	AlertDialog imageChooseDialog;//头像选择对话框
	Gallery gallery;//头像的Gallery
	ImageSwitcher is;//头像的ImageSwitcher
	int currentImagePosition;//用于记录当前选中图像在图像数组中的位置
	int previousImagePosition;//用于记录上一次图片的位置
	boolean imageChanged;//判断头像有没有变化
	/**
	 * 所有的图像图片
	 */
	private  int[] images 
			= new int[]{R.drawable.icon
		,R.drawable.image1,R.drawable.image2,R.drawable.image3
		,R.drawable.image4,R.drawable.image5,R.drawable.image6
		,R.drawable.image7,R.drawable.image8,R.drawable.image9
		,R.drawable.image10,R.drawable.image11,R.drawable.image12
		,R.drawable.image13,R.drawable.image14,R.drawable.image15
		,R.drawable.image16,R.drawable.image17,R.drawable.image18
		,R.drawable.image19,R.drawable.image20,R.drawable.image21
		,R.drawable.image22,R.drawable.image23,R.drawable.image24
		,R.drawable.image25,R.drawable.image26,R.drawable.image27
		,R.drawable.image28,R.drawable.image29,R.drawable.image30};
	
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.add);
		Intent intent = getIntent();
		//先确定好保密类型
		if(intent.getExtras()!=null && intent.getExtras().getInt("privacy") == 1) {
			privacy = 1;
		} else {
			privacy = 0;
		}
		
		
		et_name = (EditText)findViewById(R.id.name);
		et_nickname = (EditText) findViewById(R.id.nickname);
		et_Phone = (EditText)findViewById(R.id.phone);
		et_telePhone = (EditText)findViewById(R.id.telephone);
		et_company = (EditText)findViewById(R.id.company);
		et_address = (EditText)findViewById(R.id.address);
		
		
		btn_save = (Button)findViewById(R.id.btn_save);
		btn_return = (Button)findViewById(R.id.btn_cancell);
		imageButton = (ImageButton)findViewById(R.id.image_button); 
		
		/**
		 * 响应点击事件
		 */
		btn_save.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v) {
				
				String name = et_name.getText().toString();
				//判断姓名是否为空
				if(name.trim().equals("")) {
					Toast.makeText(AddActivity.this, "姓名不许为空", Toast.LENGTH_LONG).show();
					return;
				}
				//从表单上获取数据
				
				String phone = et_Phone.getText().toString();
				String nickname = et_nickname.getText().toString();
				String telephone = et_telePhone.getText().toString();
				String company = et_company.getText().toString();
				String address = et_address.getText().toString();
				int imageid;
				
				//判断头像是否改变,若改变,则用当前的位置,若没有改变,则用前一回的位置
				if(imageChanged) {
					imageid = images[currentImagePosition%images.length];
				} else {
					imageid = images[previousImagePosition%images.length];
				}

		        // 新建一个联系人数据库操作对象
		        Contacts c = new Contacts(AddActivity.this);
		        
		        // 创建一个联系人信息
		        ContactInfo infoInsert = new ContactInfo(name, nickname, phone, telephone, company, address,imageid); 
		        
		        // 保存一个联系人信息
		        c.insertContacts(infoInsert);

				setTitle("用户添加成功!");


				Intent intent = new Intent(AddActivity.this,MainActivity.class);
				startActivity(intent);
				//销毁当前视图
				finish();
			}
			
		});
		
		btn_return.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v) {
				finish();
			}
		});
		
		imageButton.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v) {
				
				loadImage();//为gallery装载图片
				initImageChooseDialog();//初始化imageChooseDialog
				imageChooseDialog.show();
			}
		});
		
	}
	
	public void loadImage() {
		if(imageChooseView == null) {
			LayoutInflater li = LayoutInflater.from(AddActivity.this);
			imageChooseView = li.inflate(R.layout.imageswitch, null);
			
			//通过渲染xml文件,得到一个视图(View),再拿到这个View里面的Gallery
			gallery = (Gallery)imageChooseView.findViewById(R.id.img_gallery);
			//为Gallery装载图片
			gallery.setAdapter(new ImageAdapter(this));
			gallery.setSelection(images.length/2);
			is = (ImageSwitcher)imageChooseView.findViewById(R.id.image_switcher);
			is.setFactory(this);
			is.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
	        //卸载图片的动画效果
	        is.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));
			gallery.setOnItemSelectedListener(new OnItemSelectedListener(){

				@Override
				public void onItemSelected(AdapterView<?> arg0, View arg1,
						int arg2, long arg3) {
					//当前的头像位置为选中的位置
					currentImagePosition = arg2;
					//为ImageSwitcher设置图像
					is.setImageResource(images[arg2 % images.length]);
					
				}
				@Override
				public void onNothingSelected(AdapterView<?> arg0) {
					
				}});
		}
		
	}
	
	/**
	 * 自定义Gallery的适配器
	 * @author Administrator
	 *
	 */
	class ImageAdapter extends BaseAdapter {

		private Context context;
		
		public ImageAdapter(Context context) {
			this.context = context;
		}
		
		@Override
		public int getCount() {
			return Integer.MAX_VALUE;
		}

		@Override
		public Object getItem(int position) {
			return position;
		}

		@Override
		public long getItemId(int position) {
			return position;
		}

		
		/**
		 * gallery从这个方法中拿到image
		 */
		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			ImageView iv = new ImageView(context);
			iv.setImageResource(images[position%images.length]);
			iv.setAdjustViewBounds(true);
			iv.setLayoutParams(new Gallery.LayoutParams(80,80));
			iv.setPadding(15, 10, 15, 10);
			return iv;
			
		}
		
	}

	
	@Override
	public View makeView() {
		ImageView view = new ImageView(this);
		view.setBackgroundColor(0xff000000);
		view.setScaleType(ScaleType.FIT_CENTER);
		view.setLayoutParams(new ImageSwitcher.LayoutParams(90,90));
		return view;
	}
	
	public void initImageChooseDialog() {
		if(imageChooseDialog == null) {
			AlertDialog.Builder builder = new AlertDialog.Builder(this);
			builder.setTitle("请选择图像")
			.setView(imageChooseView).setPositiveButton("确定", new DialogInterface.OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
					imageChanged = true;
					previousImagePosition = currentImagePosition;
					imageButton.setImageResource(images[currentImagePosition%images.length]);
				}
			})
			.setNegativeButton("取消", new DialogInterface.OnClickListener() {
				
				@Override
				public void onClick(DialogInterface dialog, int which) {
					currentImagePosition = previousImagePosition;
					
				}
			});
			imageChooseDialog = builder.create();
		}
	}

}
/*package com.example.shareingcontact;


import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.Gallery;
import android.widget.ImageButton;
import android.widget.ImageSwitcher;
import android.widget.ImageView;

public class AddActivity extends Activity {
    Button btn_cancell;
    Button btn_save;
    
    ImageButton btn_ImageButton;
    AlertDialog imagechooseDialog;
    
    int position;
    
    private  int[] images 
	= new int[]{R.drawable.icon
                ,R.drawable.image1,R.drawable.image2,R.drawable.image3
                ,R.drawable.image4,R.drawable.image5,R.drawable.image6
                ,R.drawable.image7,R.drawable.image8,R.drawable.image9
                ,R.drawable.image10,R.drawable.image11,R.drawable.image12
                ,R.drawable.image13,R.drawable.image14,R.drawable.image15
                ,R.drawable.image16,R.drawable.image17,R.drawable.image18
                ,R.drawable.image19,R.drawable.image20,R.drawable.image21
                ,R.drawable.image22,R.drawable.image23,R.drawable.image24
                ,R.drawable.image25,R.drawable.image26,R.drawable.image27
                ,R.drawable.image28,R.drawable.image29,R.drawable.image30};
    
    
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		this.setContentView(R.layout.add);
		btn_cancell = (Button) findViewById(R.id.btn_cancell);
		btn_save =(Button) findViewById(R.id.btn_save);
		btn_ImageButton = (ImageButton) findViewById(R.id.image_button);
		
		btn_ImageButton.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				initImagechooseDialog();
				imagechooseDialog.show();
				
			}

			private void initImagechooseDialog() {
				AlertDialog.Builder builder = new AlertDialog.Builder(AddActivity.this);
				builder.setTitle("请选择图片");
				LayoutInflater inflater = LayoutInflater.from(AddActivity.this);
				View view = inflater.inflate(R.layout.imageswitch, null);
				Gallery gallery = (Gallery) findViewById(R.id.img_gallery);
				gallery.setAdapter(new ImageAdapter(null));
				ImageSwitcher is = (ImageSwitcher) findViewById(R.id.image_switcher);
				
				builder.setView(view);
				
				imagechooseDialog = builder.create();
				
			}
			
			class ImageAdapter extends BaseAdapter {

				private Context context;
				public ImageAdapter(Context context){
					this.context = context;
				}
				
				@Override
				public int getCount() {
					return images.length;
				}

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

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

				@Override
				public View getView(int arg0, View arg1, ViewGroup arg2) {
					ImageView iv = new ImageView(context);
					iv.setImageResource(images[position]);
					iv.setAdjustViewBounds(true);
					iv.setLayoutParams(new LayoutParams(80,80));
					iv.setPadding(15, 10, 15, 10);
					return iv;
				}}
			
		});
		
		
		btn_cancell.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				finish();
			}
		});
		
		btn_save.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				finish();
			}
		});
	}
	
	
	

}
*/

 

 

MainActivity.java内容:

 

package com.example.shareingcontact;

import java.util.ArrayList;
import java.util.HashMap;

import com.example.shareingcontact.UpdateActivity.contact;
import com.example.shareingcontact.db.ContactInfo;
import com.example.shareingcontact.db.Contacts;
import com.example.shareingcontact.db.DatabaseOperation;

import android.opengl.Visibility;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.text.style.UpdateLayout;
import android.util.Log;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnKeyListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.GridView;
import android.widget.LinearLayout;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;

public class MainActivity extends Activity {
	private static final String TAG = "MainActivity";
	
	GridView gv_menu;
	ListView lv;
	ArrayList list;
	Contacts userlist;
	SimpleAdapter adapter;
	SimpleAdapter searchadapter;
	EditText et_search;
	int ifsearch=0;
    LinearLayout	searchLinearout;
    Button localserach;
    

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        userlist = new Contacts(MainActivity.this);
        loadMenu();
        
        lv =(ListView) findViewById(R.id.lv_userlist);
        loadUserList();
        
        //单击LISTVIEW打开修改界面
        lv.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
					long arg3) {
				
			//	HashMap item = (HashMap)arg0.getItemAtPosition(arg2);
		//		int id = Integer.parseInt(String.valueOf(item.get("id")));
				Intent intent = new Intent(MainActivity.this,Modify.class);
			/*	ContactInfo user = new ContactInfo();
				user.ContactID = Integer.parseInt(String.valueOf(item.get("id")));
				user.Name = String.valueOf(item.get("name"));
				user.SubName = String.valueOf(item.get("nickname"));
				user.MobileTel = String.valueOf(item.get("phone"));
				user.FixedTel = String.valueOf(item.get("telephone"));
				user.Company = String.valueOf(item.get("company"));
				user.Address = String.valueOf(item.get("address"));
				user.ImageId = Integer.parseInt(String.valueOf(item.get("imageid")));
			//	intent.putExtra("user", item);
				*/
				
				
			//	if(searchLinearout != null && searchLinearout.getVisibility()==View.VISIBLE) {
			//		searchLinearout.setVisibility(View.GONE);
			//	}
				
				/*将arg2作为请求码传过去  用于标识修改项的位置*/
				startActivity(intent);
			//	startActivityForResult(intent, arg2);
				
				
				
			}
		});
       
       
       
       //添加功能
       localserach = (Button) findViewById(R.id.btn_localsearch);
       localserach.setOnClickListener(new OnClickListener(){
		
		@Override
		public void onClick(View arg0) {
			et_search = (EditText) findViewById(R.id.et_search);
			String condition = et_search.getText().toString();
			if(condition.equals("")) {
				lv.setAdapter(adapter);
			}
			
	    	//userlist = new Contacts(MainActivity.this);
	    	
	    	
	    	ContactInfo[] searchuser  = userlist.queryContacts(condition);
	    	
	    	
	    	if(searchuser!=null){
	    	
			//将ContactInfo[]转换成 list格式;
	    	int length = searchuser.length;
	    	int k=0;
	    	
	   	 while(k<length) {
				HashMap item = new HashMap();
				item.put("name", searchuser[k].Name);
				item.put("nickname", searchuser[k].SubName);
				item.put("phone", searchuser[k].MobileTel);
				item.put("telephone", searchuser[k].FixedTel);
				item.put("company", searchuser[k].Company);
				item.put("address", searchuser[k].Address);
				item.put("imageid", searchuser[k].ImageId);
				item.put("id", searchuser[k].ContactID);
				if(list==null){
					list = new ArrayList<HashMap>();
				}
				list.add(item);
				k++;
			}
			searchadapter = new SimpleAdapter(
	        					MainActivity.this, 
	        					list, 
	        					R.layout.listitem, 
	        					new String[]{"imageid","name","phone"}, 
	        					new int[]{R.id.user_image,R.id.tv_name,R.id.tv_mobilephone});
			list.isEmpty();
			lv.setAdapter(searchadapter);  //将整合好的adapter交给listview,显示给用户看
			setTitle( "共查到 " + searchuser.length+" 条记录");
			
	    	}else{
	    		setTitle("没有查到任何数据");
	    	}
	    	
	    	
		}
	});

    }
    
    
    private void loadUserList(){
    	Log.d(TAG,"loadUserList");
    	//userlist = new Contacts(MainActivity.this);
    	ArrayList list = new ArrayList<HashMap>();
    	
    	ContactInfo[] userinfo  = userlist.readContacts();
    	
    	
    	if(userinfo != null ){//首次启动时,需要判断数据库是否为空
    	
    	for(ContactInfo info : userinfo){
    		Log.d(TAG, info.toString());
    	}
    	
    	//将ContactInfo[]转换成 list格式;
    	int length = userinfo.length;
    	int k=1;
    	
    
   	    while(k<length) {
			HashMap item = new HashMap();

			item.put("name", userinfo[k].Name);
			item.put("nickname", userinfo[k].SubName);
			item.put("phone", userinfo[k].MobileTel);
			item.put("telephone", userinfo[k].FixedTel);
			item.put("company", userinfo[k].Company);
			item.put("address", userinfo[k].Address);
			item.put("imageid", userinfo[k].ImageId);
			
			list.add(item);
			k++;
		}

    	
    	if(length == 0){
    		setTitle("没有查到任何数据");
    	}else{
    		
    	 adapter = new SimpleAdapter(this, 
					list, 
					R.layout.listitem, 
					new String[]{"imageid","name","phone"}, 
					new int[]{R.id.user_image,R.id.tv_name,R.id.tv_mobilephone});
 		
    	 lv.setAdapter(adapter);
    	}
    	}
    }
    
    public boolean onKeyDown(int keyCode, KeyEvent event){
    	Log.d(TAG,"onKeyDown, keyCode = " + keyCode);
		if(keyCode == KeyEvent.KEYCODE_MENU){
			if(gv_menu == null){
				loadMenu();
			}
			if(gv_menu.getVisibility() == View.GONE){
				gv_menu.setVisibility(View.VISIBLE);
			}else{
				gv_menu.setVisibility(View.GONE);
			}
		}
    	return super.onKeyDown(keyCode, event);	
    }

    
    private void loadMenu(){
    	gv_menu= (GridView) this.findViewById(R.id.gd_menu);
    	gv_menu.setBackgroundResource(R.drawable.channelgallery_bg);
    	gv_menu.setNumColumns(4);
    	gv_menu.setGravity(Gravity.CENTER);
    	gv_menu.setVerticalSpacing(10);
    	gv_menu.setHorizontalSpacing(10);
    	
    	
    	ArrayList data = new ArrayList();
    	HashMap map = new HashMap();
    	map.put("itemImage", R.drawable.menu_new_user);
    	map.put("itemText", "增加");
    	data.add(map);
    	
    	map = new HashMap();
    	map.put("itemImage", R.drawable.menu_search);
    	map.put("itemText", "查找");
    	data.add(map);
    	
    	map = new HashMap();
    	map.put("itemImage", R.drawable.menu_update);
    	map.put("itemText", "同步");
    	data.add(map);
    	
    	map = new HashMap();
    	map.put("itemImage", R.drawable.menu_quit);
    	map.put("itemText", "退出");
    	data.add(map);

    	SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.item_menu, 
    			new String[]{"itemImage","itemText"}, new int[]{R.id.item_image,R.id.item_text});
    	gv_menu.setAdapter(adapter);
    	
    	gv_menu.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> parent, View view, int position,
					long id) {
				//HashMap map = (HashMap) parent.getItemAtPosition(1);
				switch(position) {
				case 0:{
					Intent intent = new Intent(MainActivity.this, AddActivity.class);
					startActivity(intent);
					break;
				}
				case 1:{
					//设置搜索框是否可见;
					if (searchLinearout == null){
						searchLinearout = (LinearLayout) findViewById(R.id.ll_search);
					}
					if( ifsearch == 0){
						searchLinearout.setVisibility(view.VISIBLE);
					ifsearch = 1;
					}else
					{
						searchLinearout.setVisibility(view.GONE);
						ifsearch = 0;
					}
					//loadsearch();
					break;
				}
				
                case 2:{
                	Intent intent = new Intent(MainActivity.this,UpdateActivity.class);
					startActivity(intent);
                	break;
				}
                
                case 3:{
				
					break;
				}


				}
			
				
			}
		});
    }
    

	private void loadsearch() {
		
		if(searchLinearout == null) {
			searchLinearout = (LinearLayout) findViewById(R.id.ll_search);
			et_search = (EditText)findViewById(R.id.et_search);
			
			et_search.setOnKeyListener(new OnKeyListener(){
				@Override
				
				public boolean onKey(View arg0, int arg1, KeyEvent arg2) {
					String condition = et_search.getText().toString();
					if(condition.equals("")) {
						lv.setAdapter(adapter);
					}
					
			    	userlist = new Contacts(MainActivity.this);
			    	
			    	ContactInfo[] searchuser  = userlist.queryContacts(condition);
			    	
			    	
			    if(searchuser != null){
					//将ContactInfo[]转换成 list格式;
			    	int length = searchuser.length;
			    	int k=1;
			    	
			    	Log.d(TAG,"length = " + searchuser.length);
			    	
			    	Log.d(TAG,"length = " + searchuser[0].Name);
			    	
			    	
			   	 while(k<length) {
						HashMap item = new HashMap();
						item.put("name", searchuser[k].Name);
						item.put("nickname", searchuser[k].SubName);
						item.put("phone", searchuser[k].MobileTel);
						item.put("telephone", searchuser[k].FixedTel);
						item.put("company", searchuser[k].Company);
						item.put("address", searchuser[k].Address);
						item.put("imageid", searchuser[k].ImageId);
						if(list==null){
							list = new ArrayList<HashMap>();
						}
						list.add(item);
						k++;
					}

					searchadapter = new SimpleAdapter(
			        					MainActivity.this, 
			        					list, 
			        					R.layout.listitem, 
			        					new String[]{"imageid","name","phone"}, 
			        					new int[]{R.id.user_image,R.id.tv_name,R.id.tv_mobilephone});
					lv.setAdapter(searchadapter);  //将整合好的adapter交给listview,显示给用户看
					
			    	}
			    	
			    	
					/*
					
					if(list.size() == 0) {
						Drawable nodata_bg = getResources().getDrawable(R.drawable.nodata_bg);
						mainLinearLayout.setBackgroundDrawable(nodata_bg);
						setTitle("没有查到任何数据");
					} else {
						setTitle( "共查到 " + list.size()+" 条记录");
						
						mainLinearLayout.setBackgroundDrawable(null);
					}*/
					return false;
				}});
	       
		}
		  
	}


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
}

 

Modify.java内容:

package com.example.shareingcontact;

import java.util.HashMap;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

public class Modify extends Activity{

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//setContentView(R.layout.modify);
		setContentView(R.layout.modify);
		
		//Intent intent = getIntent();
	//	HashMap map = (HashMap) intent.getSerializableExtra("user");
	}

}


UpdateActivity.java 内容:

package com.example.shareingcontact;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.ArrayList;
import java.util.HashMap;


import com.example.shareingcontact.db.ContactInfo;
import com.example.shareingcontact.db.Contacts;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;

public class UpdateActivity extends Activity {
    Button btn_update_cancell;
    Button btn_update;
    EditText et_name;
    EditText et_phone;
    String name;
	String phone;
	Contacts userlist;
	CheckBox ck_find;
	int share;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		this.setContentView(R.layout.update);
		setTitle("SharingContact");
		btn_update_cancell = (Button) findViewById(R.id.btn_update_cancell);
		btn_update =(Button) findViewById(R.id.btn_update);
		et_name = (EditText) findViewById(R.id.name2);
		et_phone = (EditText) findViewById(R.id.phone2);
		ck_find = (CheckBox) findViewById(R.id.find);
		
		
		
		btn_update_cancell.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				finish();
			}
		});
		
		btn_update.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				
				
				Log.d("test","test");
				contact[] testcontact=new contact[10];
				for(int i=0;i<10;i++){
					testcontact[i]=new contact();
					testcontact[i].contactId=i;
					testcontact[i].name="12312561";
					testcontact[i].tel="123456";
				}
				
				//sync("123456789",testcontact);
				Log.d("test",sync("123456789",testcontact));
				
			}
			/*	name = et_name.getText().toString();
				phone = et_phone.getText().toString();
				if(ck_find.isChecked()){
					share = 2;
				}else
				{share = 1;
				}
				
				if(name == "" || phone == ""){
					setTitle("请输入姓名和电话");
				}
				else{
					userlist = new Contacts(UpdateActivity.this);
					ContactInfo[][] userinfo  = userlist.syncContactsPre();
					
					register(phone, share);
					contact[] infosInsert = null;
			    	contact[] infosUpdate = null;
			    	
			    	
			    	
					if(userinfo[0] != null){
						int k=0;
						int length1 = userinfo[0].length;
						infosInsert = new contact[length1];
						
						 while(k<length1) {
							    infosInsert[k] = new contact();
								infosInsert[k].name = userinfo[0][k].Name;
								infosInsert[k].tel = userinfo[0][k].MobileTel;
								infosInsert[k].contactId=userinfo[0][k].ContactID;
								 k++;
					   		  }
						// log("test",sync(phone, infosInsert));
					//	 System.out.println(sync(phone, infosInsert));
						 Log.d("test", "test");
						 
						 sync(phone, infosInsert);
					}
					
					if(userinfo[1] != null){
						int k=0;
						int length1 = userinfo[1].length;
						infosUpdate = new contact[length1];
						 while(k<length1) {
							 infosUpdate[k] = new contact();
							 infosUpdate[k].name = userinfo[1][k].Name;
							 infosUpdate[k].tel = userinfo[1][k].MobileTel;
							 infosUpdate[k].contactId=userinfo[1][k].ContactID;
							 k++;
					   		  }
						 sync(phone, infosUpdate);
					}
					
					
					if(userinfo[2] != null){
						int k=0;
						int length1 = userinfo[1].length;
						 while(k<length1) {
							 deleteContact(phone,userinfo[2][k].ContactID);
							 k++;
					   		  }
					}
				}
				
				finish();
			}*/
				
		});
	}
	
	public static String register(String tel,int share){
		String getMsg;
		try{
			Socket socket=new Socket("109.131.14.239",10086);
			OutputStream os=socket.getOutputStream();
			PrintWriter sos=new PrintWriter(os);
			DataOutputStream dos=new DataOutputStream(os);
			BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
			
			dos.writeInt(1);
			dos.flush();
			sos.println(tel);
			sos.flush();
			dos.writeInt(share);
			sos.flush();
			dos.flush();
			
			os.close();sos.close();dos.close();is.close();socket.close();
			
			getMsg=is.readLine();
			
		}catch(Exception e){
			getMsg="Connection ERROR";
		}
		
		return getMsg;
	}
	
	class contact{
		public String name;
		public String tel;
		public int contactId;
	}
	
	//发送Update和insert表
	public static String sync(String utel,contact[] contact){
		String getMsg;
		int count=contact.length;
		try{
			Socket socket=new Socket("109.131.14.239",10086);
			OutputStream os=socket.getOutputStream();
			PrintWriter sos=new PrintWriter(os);
			DataOutputStream dos=new DataOutputStream(os);
			BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
			
			//set the symbol and length
			dos.writeInt(2);
			dos.flush();
			dos.writeInt(count);
			dos.flush();
			
			//transmission
			sos.println(utel);
			sos.flush();
			for(int i=0;i<count;i++){
				sos.println(contact[i].name);
				sos.println(contact[i].tel);
				sos.flush();
				dos.writeInt(contact[i].contactId);
				dos.flush();
			}
			getMsg=is.readLine();
			
			os.close();sos.close();dos.close();is.close();socket.close();
			
		}catch(Exception e){
			getMsg="Connection ERROR";
		}
		return getMsg;
	}
	
	//发送Delete表
	public static String deleteContact(String utel,int contactId){
		String getMsg;
		try{
			Socket socket=new Socket("109.131.14.239",10086);
			OutputStream os=socket.getOutputStream();
			PrintWriter sos=new PrintWriter(os);
			DataOutputStream dos=new DataOutputStream(os);
			BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
			
			dos.writeInt(3);
			dos.flush();
			sos.println(utel);
			sos.flush();
			dos.writeInt(contactId);
			
			getMsg=is.readLine();
			
			os.close();sos.close();dos.close();is.close();socket.close();
		}catch(Exception e){
			getMsg="Connection ERROR";
		}
		
		return getMsg;
	}

}


ContactInfo.java 内容:

package com.example.shareingcontact.db;

public class ContactInfo {
	public int ContactID = 0;		// 联系人ID号
	public String Name = null;		// 姓名
	public String SubName = null;	// 昵称
	public String MobileTel = null;	// 移动电话
	public String FixedTel = null;	// 固定电话
	public String Company = null;	// 单位
	public String Address = null;	// 住址
	public int ImageId = 0;			// 图id
	
	public ContactInfo(String name, String subName, String mobileTel, String fixedTel, String company, String address, int imageId){
		Name = name;
		SubName = subName;
		MobileTel = mobileTel;
		FixedTel = fixedTel;
		Company = company;
		Address = address;
		ImageId = imageId;
	}
	public ContactInfo(){
	}	
}


Contacts.java 内容

package com.example.shareingcontact.db;


import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteStatement;

/* 数据库的组织方法
 * local表----本地联系人信息表
 * del表------删除表(未同步)
 * ins表------新添表(未同步)
 * upd表------更新表(未同步)
 * remote表---服务器下的同步表名
 * */
public class Contacts {
	private DatabaseOperation dbOp = null;	
	private String dbName = "Contacts11.db";
	private int Version = 1;
	private String mainTable = "local";	
	private String deleteTable = "del";
	private String insertTable = "ins";
	private String updateTable = "upd";
	private String remoteTable = "remote";
	
	/* 功能:新建通讯录
	 * */	
	public Contacts(Context activityContext){		
		dbOp = new DatabaseOperation(activityContext);
		dbOp.readWDb(dbName, Version);	
		
		createMainTable();
		createInsertTable();
		createDeleteTable();
		createUpdateTable();
		createRemoteTable();
	}
	/* 功能:关闭联系人操作
	 * */
	public void closeContacts(){
		dbOp.closeDb();
	}
	/* 功能:读取所有联系人信息
	 * */
	public ContactInfo[] readContacts(){
		String sqlQuery = "";
		ContactInfo[] infos = null;
		int nRecordCnt = 0;
		int index = 0;
		
		sqlQuery = "SELECT * FROM '"+mainTable+"';";		
		Cursor result = dbOp.queryDb(sqlQuery);
		nRecordCnt = result.getCount();
		
		if(nRecordCnt>0)
		{
			infos = new ContactInfo[nRecordCnt];
			for(int j=0; j<nRecordCnt; j++)
				infos[j] = new ContactInfo();
			
			index = 0;
			result.moveToFirst();			
			while(!result.isAfterLast()){
				infos[index].ContactID = result.getInt(0);
				infos[index].Name = result.getString(1);			
				infos[index].SubName = result.getString(2);
				infos[index].MobileTel = result.getString(3);
				infos[index].FixedTel = result.getString(4);
				infos[index].Company = result.getString(5);
				infos[index].Address = result.getString(6);	
				infos[index].ImageId = result.getInt(7);
				index++;
				result.moveToNext();
			}
			result.close();
		}
		
		return infos;		
	}
	/* 功能:添加一条记录
	 * p:添加人信息
	 * */
	public void insertContacts(ContactInfo info){
		insertMainTable(info);
		insertInsertTable(info);
	}
	/* 功能:删除一条记录
	 * Id:删除人ID号
	 * */ 
	public void deleteContacts(int Id){
		deleteTable(mainTable, Id);
		insertDeleteTable(Id);
	}
	/* 功能:修改联系人信息
	 * p:修改后的联系人信息
	 * */
	public void updateContacts(ContactInfo info){
		UpdateMainTable(info);
		insertUpdateTable(info);		
	}	
	/* 功能:查询记录
	 * keyValue:查询人名字或电话
	 * */
	public ContactInfo[] queryContacts(String keyValue){
		String sqlQuery = "";
		ContactInfo[] infos = null;
		int nRecordCnt = 0;
		int index = 0;
		
		sqlQuery = "SELECT * FROM '"+mainTable+"' WHERE Name LIKE '%"+keyValue+"%' OR MobileTel LIKE '%"+keyValue+"%'"+";";		
		Cursor result = dbOp.queryDb(sqlQuery);
		nRecordCnt = result.getCount();
		
		if(nRecordCnt>0)
		{
			infos = new ContactInfo[nRecordCnt];
			for(int j=0; j<nRecordCnt; j++)
				infos[j] = new ContactInfo();
			
			index = 0;
			result.moveToFirst();			
			while(!result.isAfterLast()){
				infos[index].ContactID = result.getInt(0);
				infos[index].Name = result.getString(1);			
				infos[index].SubName = result.getString(2);
				infos[index].MobileTel = result.getString(3);
				infos[index].FixedTel = result.getString(4);
				infos[index].Company = result.getString(5);
				infos[index].Address = result.getString(6);	
				infos[index].ImageId = result.getInt(7);
				index++;
				result.moveToNext();
			}
			result.close();
		}
		
		return infos;
	}	
	/* 同步的前端操作,获取数据
	 * */
	public ContactInfo[][] syncContactsPre(){
		ContactInfo[][] infoss = syncContactsToServer();
		
		return infoss;
	}
	/* 同步成功的后续操作
	 * */
	public void syncContactsPost(String remoteTableName){
		//insertRemoteTable(remoteTableName);
		
		clearTable(insertTable);
		clearTable(updateTable);
		clearTable(deleteTable);
	}	
	
	/* 服务器同步操作
	 * */
	public void syncContacts(String tableName, ContactInfo[][] infoss){
		synInsertContacts(tableName, infoss[0]);
		synUpdateContacts(tableName, infoss[1]);
		synDeleteContacts(tableName, infoss[2]);
	}
	/* 功能:在服务器中同步添加联系人信息
	 * tableName:表名
	 * p:联系人信息
	 * table
	 * */
	private void synInsertContacts(String tableName, ContactInfo[] infos){
		String sqlBatInsert = "INSERT INTO '"+tableName+"' (ContactID, Name, SubName, MobileTel, FixedTel, Company, Address, ImageId)"+" VALUES (?,?,?,?,?,?,?,?);";
		contactsBat cbi = new contactsBat();
		
		dbOp.batchInsertDb(sqlBatInsert, cbi, infos);
	}
	private void synUpdateContacts(String tableName, ContactInfo[] infos){
		contactsBat cbu = new contactsBat();	
		
		dbOp.batchUpdateDb(tableName, cbu, infos);
	}	
	private void synDeleteContacts(String tableName, ContactInfo[] infos){
		contactsBat cbd = new contactsBat();
		
		dbOp.batchDeleteDb(tableName, cbd, infos);
	}	
	
	/* 功能:获取本地变动的联系人信息
	 * */
	private ContactInfo[][] syncContactsToServer(){		
		
		ContactInfo[] infosInsert = traverseContacts(insertTable);
		ContactInfo[] infosUpdata = traverseContacts(updateTable);
		ContactInfo[] infosDelete = traverseContacts(deleteTable);
		
		ContactInfo[][] infoss= new ContactInfo[3][];
		infoss[0] = infosInsert;
		infoss[1] = infosUpdata;
		infoss[2] = infosDelete;		
				
		return infoss;
	}	
	
	/* 功能:遍历表
	 * */
	private ContactInfo[] traverseContacts(String tableName){
		String sqlQuery = "";
		ContactInfo[] infos = null;
		int nRecordCnt = 0;
		int index = 0;
		
		sqlQuery = "SELECT * FROM '"+tableName+"';";		
		Cursor result = dbOp.queryDb(sqlQuery);
		nRecordCnt = result.getCount();
		
		if(nRecordCnt>0)
		{
			infos = new ContactInfo[nRecordCnt];
			for(int j=0; j<nRecordCnt; j++)
				infos[j] = new ContactInfo();
			
			index = 0;
			result.moveToFirst();			
			while(!result.isAfterLast()){
				if(tableName!=deleteTable)
				{
					infos[index].ContactID = result.getInt(1);
					infos[index].Name = result.getString(2);			
					infos[index].SubName = result.getString(3);
					infos[index].MobileTel = result.getString(4);
					infos[index].FixedTel = result.getString(5);
					infos[index].Company = result.getString(6);
					infos[index].Address = result.getString(7);	
					infos[index].ImageId = result.getInt(8);
				}
				else
				{
					infos[index].ContactID = result.getInt(1);
				}
				index++;
				result.moveToNext();
			}
			result.close();
		}
		
		return infos;
	}	
	
	/* MainTable
	 * */
	private void createMainTable(){
		String sqlCreate = "CREATE TABLE IF NOT EXISTS '"+mainTable+
				"' (ContactID INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT, SubName TEXT, MobileTel TEXT, FixedTel TEXT," +
				"Company TEXT, Address TEXT, ImageId INTEGER);";		
		dbOp.createDbTab(sqlCreate);
	}	
	private void insertMainTable(ContactInfo info){		
		String sqlInsert = "INSERT INTO '"+mainTable+"' (Name, SubName, MobileTel, FixedTel, Company, Address, ImageId)"+" VALUES "+"('"+
				info.Name+"','"+info.SubName+"','"+info.MobileTel+"','"+info.FixedTel+"','"+info.Company+"','"+info.Address+"',"+String.valueOf(info.ImageId)+");";			
		
		dbOp.insertDb(sqlInsert);		
	}
	private void UpdateMainTable(ContactInfo info){
		String sqlUpdate = "UPDATE '"+mainTable+"' SET "+ 
				"Name='"+info.Name+"',SubName='"+info.SubName+"',MobileTel='"+info.MobileTel+"',FixedTel='"+info.FixedTel+"',Company='"+info.Company+"',Address='"+info.Address+
				"',"+"ImageId="+String.valueOf(info.ImageId)+" WHERE ContactID="+String.valueOf(info.ContactID)+";";		
		dbOp.updataDb(sqlUpdate);	
	}	
	/* insertTable
	 * */
	private void createInsertTable(){
		String sqlCreate = "CREATE TABLE IF NOT EXISTS '"+insertTable+
				"' (ID INTEGER PRIMARY KEY AUTOINCREMENT, ContactID INTEGER, Name TEXT, SubName TEXT, MobileTel TEXT, FixedTel TEXT," +
				"Company TEXT, Address TEXT, ImageId INTEGER);";
		dbOp.createDbTab(sqlCreate);			
	}	
	private void insertInsertTable(ContactInfo info){
		String sqlQuery = "SELECT * FROM '"+mainTable+"';";
		Cursor result= dbOp.queryDb(sqlQuery);
		result.moveToLast();
		info.ContactID = (int) result.getLong(0);
		
		String sqlInsert = "INSERT INTO '"+insertTable+"' (ContactID, Name, SubName, MobileTel, FixedTel, Company, Address, ImageId)"+" VALUES "+"("+
				String.valueOf(info.ContactID)+",'"+info.Name+"','"+info.SubName+"','"+info.MobileTel+"','"+info.FixedTel+"','"+info.Company+"','"+info.Address+"',"+String.valueOf(info.ImageId)+");";		
		dbOp.insertDb(sqlInsert);			
	}
	/* updateTable
	 * */	
	private void createUpdateTable(){
		String sqlCreate = "CREATE TABLE IF NOT EXISTS '"+updateTable+
				"' (ID INTEGER PRIMARY KEY AUTOINCREMENT, ContactID INTEGER, Name TEXT, SubName TEXT, MobileTel TEXT, FixedTel TEXT," +
				"Company TEXT, Address TEXT, ImageId INTEGER);";
		dbOp.createDbTab(sqlCreate);			
	}	
	private void insertUpdateTable(ContactInfo info){
		String sqlInsert = "INSERT INTO '"+updateTable+"' (ContactID, Name, SubName, MobileTel, FixedTel, Company, Address, ImageId)"+" VALUES "+"("+
				String.valueOf(info.ContactID)+",'"+info.Name+"','"+info.SubName+"','"+info.MobileTel+"','"+info.FixedTel+"','"+info.Company+"','"+info.Address+"',"+String.valueOf(info.ImageId)+");";		
		dbOp.insertDb(sqlInsert);	 	
	}
	/* deleteTable
	 * */
	private void createDeleteTable(){
		String sqlCreate = "CREATE TABLE IF NOT EXISTS '"+deleteTable+
				"' (ID INTEGER PRIMARY KEY AUTOINCREMENT, ContactID INTEGER);";
		dbOp.createDbTab(sqlCreate);		
	}	
	private void insertDeleteTable(int Id){
		String sqlInsert = "INSERT INTO '"+deleteTable+"' (ContactID)"+" VALUES "+"("+String.valueOf(Id)+")";	
		dbOp.insertDb(sqlInsert);	
	}
	/* remoteTable
	 * */
	private void createRemoteTable(){
		String sqlCreate = "CREATE TABLE IF NOT EXISTS '"+remoteTable+
				"' (ID INTEGER PRIMARY KEY AUTOINCREMENT, remoteTableName TEXT);";
		dbOp.createDbTab(sqlCreate);
	}
	private void insertRemoteTable(String tableName){
		String sqlQuery = "SELECT * FROM '"+remoteTable+"';";
		Cursor result = dbOp.queryDb(sqlQuery);
		if(result.getCount()!=0)
			return;		
		
		String sqlInsert = "INSERT INTO '"+remoteTable+"' (remoteTableName)"+" VALUES "+"('"+tableName+"')";
		dbOp.insertDb(sqlInsert);
	}

	/* delete table record
	 * */
	private void deleteTable(String tableName, int Id){
		String key = "ContactID";
		String sqlDelete = "DELETE FROM '"+tableName+"' WHERE "+key+"="+String.valueOf(Id)+";";		
		dbOp.deleteDb(sqlDelete);	
	}	
	/* clear table
	 * */
	private void clearTable(String tableName){
		String sqlDelete = "DELETE FROM '"+tableName+"';";
		dbOp.deleteDb(sqlDelete);
		
		String sqlUpdate = "UPDATE sqlite_sequence SET seq = 0 WHERE name= '"+tableName+"';";
		dbOp.deleteDb(sqlUpdate);
	}
}


/* 服务器端
 * */
class contactsBat implements DbBat{
	public void batInsert(SQLiteStatement stat, ContactInfo[] infos){
		if(infos == null)
			return;
		
		for(int i=0; i<infos.length; i++)
		{	
			int columns = 1;
			stat.bindLong(columns, infos[i].ContactID);
			columns++;
			stat.bindString(columns, infos[i].Name);
			columns++;
			stat.bindString(columns, infos[i].SubName);
			columns++;
			stat.bindString(columns, infos[i].MobileTel);
			columns++;
			stat.bindString(columns, infos[i].FixedTel);
			columns++;
			stat.bindString(columns, infos[i].Company);
			columns++;
			stat.bindString(columns, infos[i].Address);
			columns++;
			stat.bindLong(columns, infos[i].ImageId);
			
			stat.executeInsert();
		}
	}
	
	public void batUpdate(String tableName, SQLiteDatabase db, ContactInfo[] infos){
		if(infos == null)
			return;
		
		for(int i=0; i<infos.length; i++)
		{
			String sqlUpdate ="UPDATE '"+tableName+"' SET "+ 
					"Name='"+infos[i].Name+"',SubName='"+infos[i].SubName+"',MobileTel='"+infos[i].MobileTel+"',FixedTel='"+infos[i].FixedTel+"',Company='"+infos[i].Company+"',Address='"+infos[i].Address+
					"', ImageId="+String.valueOf(infos[i].ImageId)+" WHERE ContactID="+String.valueOf(infos[i].ContactID)+";";	
			db.execSQL(sqlUpdate);
		}
	}
	
	public void batDelete(String tableName, SQLiteDatabase db, ContactInfo[] infos){
		if(infos == null)
			return;		
		
		for(int i=0; i<infos.length; i++)
		{
			String key = "ContactID";
			String sqlDelete ="DELETE FROM '"+tableName+"' WHERE "+key+"="+String.valueOf(infos[i].ContactID)+";";
			db.execSQL(sqlDelete);
		}		
	}
}













DatabaseHelper.java 内容

package com.example.shareingcontact.db;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;


/* 1. SQL对大小写不敏感
 * */
class DatabaseHelper extends SQLiteOpenHelper{
	
	public DatabaseHelper(Context context, String Name, int Version){
		super(context, Name, null, Version);
	}
	
	// 创建数据库时被调用
	public void onCreate(SQLiteDatabase db){
//		db.execSQL(sqlCreate);
	}	
	
	// 升级数据库时被调用
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
//		String sql = "DROP TABLE if exits local";		
//		db.execSQL(sql);
//		onCreate(db);
	}	
}


DatabaseOperation.java 内容:

package com.example.shareingcontact.db;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteStatement;
import com.example.shareingcontact.db.DatabaseHelper;

public class DatabaseOperation {
	
	private SQLiteDatabase db;
	private DatabaseHelper dbHelper;
	private Context context = null;
	
	public DatabaseOperation(Context activityContext){
		context = activityContext;
	}	
	/* 功能:创建数据库
	 * context----Activity this
	 * dbName-----数据库名
	 * Version----版本号1,2,3...
	 * sqlCreate--创建数据库表sql命令
	 * */
	public void readWDb(String dbName, int Version){
		dbHelper = new DatabaseHelper(context, dbName, Version);	
				
		db = dbHelper.getWritableDatabase();		
	}
	/* 功能:新建表
	 * 
	 * */
	public void createDbTab(String sql){
		db.execSQL(sql);
	}
	
	/* 功能:关闭数据
	 */
	public void closeDb(){
		db.close();
	}
	/* 功能:添加一条记录
	 * */
	public void insertDb(String sql){
		db.execSQL(sql);
	}
	/* 功能:更新记录
	 * sql = "UPDATE table_name SET <des_operation> WHERE <condition>"
	 * */
	public void updataDb(String Sql){
		db.execSQL(Sql);
	}	
	/* 功能:删除记录
	 * sql = "DELETE FROM table_name WHERE <condition>;"
	 * */
	public void deleteDb(String Sql){
		db.execSQL(Sql);
	}	
	/* 功能:批量插入
	 * */
	public void batchInsertDb(String Sql, DbBat bi, ContactInfo[] infos){
		SQLiteStatement stat = db.compileStatement(Sql);		
		db.beginTransaction();
		// 插入操作
		bi.batInsert(stat, infos);
		
		db.setTransactionSuccessful();
		db.endTransaction();		
	}
	public void batchUpdateDb(String tableName, DbBat bu, ContactInfo[] infos){	
		db.beginTransaction();
		// 更新操作
		bu.batUpdate(tableName, db, infos);
		
		db.setTransactionSuccessful();
		db.endTransaction();		
	}
	public void batchDeleteDb(String tableName, DbBat bd, ContactInfo[] infos){	
		db.beginTransaction();
		// 删除操作
		bd.batDelete(tableName, db, infos);
		
		db.setTransactionSuccessful();
		db.endTransaction();		
	}
	
	/* 功能:查询记录
	 * sql = "SELECT <Fields> from table_name ORDER BY <Field>"
	 * */
	public Cursor queryDb(String Sql){
		return db.rawQuery(Sql, null);
	}		
		
}

interface DbBat{
	public void batInsert(SQLiteStatement stat, ContactInfo[] infos);
	public void batUpdate(String tableName, SQLiteDatabase db, ContactInfo[] infos);
	public void batDelete(String tableName, SQLiteDatabase db, ContactInfo[] infos);
}












 


 

相关文章

    暂无相关文章
相关栏目:

用户点评