例子1:android加載自己文件夾的圖片,使用R類

           

          main.xml文件

          <?xml version="1.0" encoding="utf-8"?>
          <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              >
          <ImageView
               android:id="@+id/iv1"
               android:layout_width="fill_parent"
               android:layout_height="wrap_content"
               android:src="@drawable/longshuai"      <!-- longshuai.png為圖片的名稱,記在資源文件里頭,不用文件名后綴-->
             />
          </LinearLayout>

          注意:強調一下,資源文件的圖片命名規則比較嚴格,由[a-z]和數字和“_”組成,而且不能數字開頭,我就常犯傻,命名老是數字或者大寫字母開頭,這種錯誤——囧。。

          我們要把longshuai.png導入到res中,最簡單的方式就是直接找到這個文件夾,復制進去

          之后右鍵更新,我們就可以在res中看到自己的圖片了

          android使用ImageView加載本地SdCard圖片和加載網絡圖片 - 夏天的風 - FreeSimpleHappy

           

          不用寫代碼。。直接用自動生成的代碼。。

               public void onCreate(Bundle savedInstanceState)

              {
                  super.onCreate(savedInstanceState);
                  setContentView(R.layout.main);

                }

          效果如下:

          android使用ImageView加載本地SdCard圖片和加載網絡圖片 - 夏天的風 - FreeSimpleHappy

           

           

          2、加載本地圖片(其實主要是SdCard中圖片)

          關于SdCard的使用,可以參見 http://longshuai2007.blog.163.com/blog/static/1420944142011611103950500/

           

          xml文件同上面的是一樣的,并不需要修改

              public void onCreate(Bundle savedInstanceState) {
                  super.onCreate(savedInstanceState);
                  setContentView(R.layout.main);
                 
                  ImageView image1 = (ImageView) findViewById(R.id.iv1);  //獲得ImageView對象
                   /*為什么圖片一定要轉化為 Bitmap格式的?。?*/
                  Bitmap bitmap = getLoacalBitmap("/sdcard/tubiao.jpg"); //從本地取圖片(在cdcard中獲取)  //
                  image1 .setImageBitmap(bitmap); //設置Bitmap
                }

           

              /**
              * 加載本地圖片
              * @param url
              * @return
              */
              public static Bitmap getLoacalBitmap(String url) {
                   try {
                        FileInputStream fis = new FileInputStream(url);
                        return BitmapFactory.decodeStream(fis);  ///把流轉化為Bitmap圖片        

                     } catch (FileNotFoundException e) {
                        e.printStackTrace();
                        return null;
                   }
              }

           

          顯示效果如下:

          android使用ImageView加載本地SdCard圖片和加載網絡圖片 - 夏天的風 - FreeSimpleHappy
           
           
          3、獲取網絡上的圖片
          mian.xml文件和1中一樣,并不需要修改!
           
          代碼:
              public void onCreate(Bundle savedInstanceState) {
                  super.onCreate(savedInstanceState);
                  setContentView(R.layout.main);
                 
                  ImageView image1 = (ImageView) findViewById(R.id.iv1);
                  Bitmap bitmap =getHttpBitmap("
                                 //從網上取圖片
                  image1 .setImageBitmap(bitmap); //設置Bitmap
          }
           
              /**
              * 從服務器取圖片
              * @param url
              * @return
              */
              public static Bitmap getHttpBitmap(String url) {
                   URL myFileUrl = null;
                   Bitmap bitmap = null;
                   try {
                        myFileUrl = new URL(url);
                   } catch (MalformedURLException e) {
                        e.printStackTrace();
                   }
                   try {
                        HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection();
                        conn.setConnectTimeout(0);
                        conn.setDoInput(true);
                        conn.connect();
                        InputStream is = conn.getInputStream();
                        bitmap = BitmapFactory.decodeStream(is);
                        is.close();
                   } catch (IOException e) {
                        e.printStackTrace();
                   }
                   return bitmap;
              }
           
           
          注意:由于需要使用網絡,所以 AndroidManfest.xml 文件需要添加使用網絡權限!!!
              <uses-permission android:name="android.permission.INTERNET" />
           
          這也是我為什么一直錯,而且一直找不到原因,它就是不顯示圖片,什么錯誤都沒有,坑爹?。。?/div>
           
          android使用ImageView加載本地SdCard圖片和加載網絡圖片 - 夏天的風 - FreeSimpleHappy
           
          posted @ 2013-04-21 16:08 姚先進 閱讀(645) | 評論 (2)編輯 收藏
           
          ackage shenmixiaozhu;
          import java.sql.Date;
          public class TypeChange {
           
            public TypeChange() {
             }
             //change the string type to the int type
             public static   int stringToInt(String intstr)
             {
               Integer integer;
               integer = Integer.valueOf(intstr);
               return integer.intValue();
             }
             //change int type to the string type
             public static String intToString(int value)
             {
               Integer integer = new Integer(value);
               return integer.toString();
             }
             //change the string type to the float type
             public static   float stringToFloat(String floatstr)
             {
               Float floatee;
               floatee = Float.valueOf(floatstr);
               return floatee.floatValue();
             }
             //change the float type to the string type
             public static String floatToString(float value)
             {
               Float floatee = new Float(value);
               return floatee.toString();
             }
             //change the string type to the sqlDate type
             public static java.sql.Date stringToDate(String dateStr)
             {
               return   java.sql.Date.valueOf(dateStr);
             }
             //change the sqlDate type to the string type
             public static String dateToString(java.sql.Date datee)
             {
               return datee.toString();
             }

             public static void main(String[] args)
             {
               java.sql.Date day ;
               day = TypeChange.stringToDate("2003-11-3");
               String strday = TypeChange.dateToString(day);
               System.out.println(strday);
             }
          }
          posted @ 2013-04-10 16:31 姚先進 閱讀(179) | 評論 (0)編輯 收藏
           

          android 完全退出應用程序
          android android 退出應用程序, 單例模式管理Activity
          引自:http://www.yoyong.com/archives/199
          android 退出應用程序會調用android.os.Process.killProcess(android.os.Process.myPid())
          或是System.exit(0),這只是針對第一個Activity(也就是入口的Activity)時生效。如果有A,B,C
          三個Activity,而想在B 或C 中Activity 退出,調用上面的方法,往往會銷毀當前的Activity 返回上
          一個Activity。當然也可以逐個返回上一個Activity,直到跳轉到入口的Activity,最后退出應用程
          序。但這樣比較麻煩,而且逐個返回的體驗并不友好。
          網上比較流行的方法是定義棧,寫一個ExitApplication 類,利用單例模式管理Activity,在每個在
          Activity 的onCreate()方法中調用ExitApplication.getInstance().addActivity(this)方法,在退
          出時調用ExitApplication.getInstance().exit()方法,就可以完全退出應用程序了。
          ExitApplication 類
          代碼如下:
          view plaincopy to clipboardprint?
          1 import java.util.LinkedList;
          2 import java.util.List;
          3
          4 import android.app.Activity;
          5 import android.app.Application;
          6
          7 public class ExitApplication extends Application {


          9 private List<Activity> activityList=new LinkedList<Activity>();

          10 private static ExitApplication instance;
          11
          12 private ExitApplication()
          13 {
          14 }
          15 //單例模式中獲取唯一的ExitApplication 實例
          16 public static ExitApplication getInstance()
          17 {
          18 if(null == instance)
          19 {
          20 instance = new ExitApplication();
          21 }
          22 return instance;
          23
          24 }
          25 //添加Activity 到容器中
          26 public void addActivity(Activity activity)
          27 {
          28 activityList.add(activity);
          29 }
          30 //遍歷所有Activity 并finish
          31
          32 public void exit()
          33 {
          34
          35 for(Activity activity:activityList)
          36 {
          37 activity.finish();
          38 }
          39
          40 System.exit(0);
          41
          42 }
          43 }
          下面的三個類IndexActivity, BActivity,CActivity 是簡單的例子, 分別是
          IndexActivity–>BActivity–>CActivity 的跳轉順序。在每個Activity 類中onCreate()方法中調
          用ExitApplication.getInstance().addActivity(Activity activity)方法。在任何一個Activity 界面退
          出應用程序時,只要調用ExitApplication.getInstance().exit()方法,就可以在任何一個Activity
          中完全退出應用程序。
          IndexActivity 類源代碼:
          view plaincopy to clipboardprint?
          44 import android.app.Activity;
          45 import android.content.Intent;
          46 import android.os.Bundle;
          47 import android.view.View;
          48 import android.view.View.OnClickListener;
          49 import android.widget.Button;
          50
          51 public class IndexActivity extends Activity {
          52 /** Called when the activity is first created. */
          53 @Override
          54 public void onCreate(Bundle savedInstanceState) {
          55 super.onCreate(savedInstanceState);
          56 setContentView(R.layout.main);
          57
          58 Button next=(Button)findViewById(R.id.next_to_b);
          59 next.setOnClickListener(nextClick);
          60
          61 Button exit=(Button)findViewById(R.id.exit_main);
          62 exit.setOnClickListener(exitClick);
          63 ExitApplication.getInstance().addActivity(this);
          64
          65 }
          66
          67 OnClickListener nextClick=new OnClickListener() {
          68
          69 @Override
          70 public void onClick(View v) {
          71 // TODO Auto-generated method stub
          72
          73 Intent intent=new Intent(IndexActivity.this,BActivity.class);
          74 startActivity(intent);
          75
          76 }
          77 };
          78
          79 OnClickListener exitClick=new OnClickListener() {
          80
          81 @Override
          82 public void onClick(View v) {
          83 // TODO Auto-generated method stub
          84 ExitApplication.getInstance().exit();
          85 }
          86 };
          87 }
          BActivity 類源代碼:
          view plaincopy to clipboardprint?
          88 import android.app.Activity;
          89 import android.content.Intent;
          90 import android.os.Bundle;
          91 import android.view.View;
          92 import android.view.View.OnClickListener;
          93 import android.widget.Button;
          94
          95 public class BActivity extends Activity {
          96
          97 @Override
          98 protected void onCreate(Bundle savedInstanceState) {
          99 // TODO Auto-generated method stub
          100 super.onCreate(savedInstanceState);
          101
          102 setContentView(R.layout.b);
          103 Button next_to_c=(Button)findViewById(R.id.next_to_c);
          104 next_to_c.setOnClickListener(next_to_cClick);
          105
          106 Button exit_b=(Button)findViewById(R.id.exit_b);
          107 exit_b.setOnClickListener(exitClick);
          108 ExitApplication.getInstance().addActivity(this);
          109
          110 }
          111
          112 OnClickListener next_to_cClick=new OnClickListener() {
          113
          114 @Override
          115 public void onClick(View v) {
          116 // TODO Auto-generated method stub
          117
          118 Intent intent=new Intent(BActivity.this,CActivity.class);
          119 startActivity(intent);
          120
          121 }
          122 };
          123
          124 OnClickListener exitClick=new OnClickListener() {
          125
          126 @Override
          127 public void onClick(View v) {
          128 // TODO Auto-generated method stub
          129 ExitApplication.getInstance().exit();
          130 }
          131 };
          132 }
          CActivity 類源代碼:
          view plaincopy to clipboardprint?
          133 import android.app.Activity;
          134 import android.os.Bundle;
          135 import android.view.View;
          136 import android.view.View.OnClickListener;
          137 import android.widget.Button;
          138
          139 public class CActivity extends Activity{
          140
          141 @Override
          142 protected void onCreate(Bundle savedInstanceState) {
          143 // TODO Auto-generated method stub
          144 super.onCreate(savedInstanceState);
          145
          146 setContentView(R.layout.c);
          147
          148 Button exit_c=(Button)findViewById(R.id.exit_c);
          149 exit_c.setOnClickListener(exitClick);
          150 ExitApplication.getInstance().addActivity(this);
          151
          152 }
          153
          154 OnClickListener exitClick=new OnClickListener() {
          155
          156 @Override
          157 public void onClick(View v) {
          158 // TODO Auto-generated method stub
          159 ExitApplication.getInstance().exit();
          160 //如果只是調用以下其中的一個方法,并不會完全退出應用
          161 //android.os.Process.killProcess(android.os.Process.myPid());
          162 //System.exit(0);
          163 }
          164 };
          165
          166 }

          posted @ 2013-04-10 09:05 姚先進 閱讀(195) | 評論 (0)編輯 收藏
           

          1、Listview簡述

          A view that shows items in a vertically scrolling list. The items come from theListAdapter associated with this view.

          簡單來說就是,創建Listview,然后給數值就行了。

          而這些數值來源有三種方式:ArrayAdapter、SimpleAdapter、SimpleCursorAdapter


          第一種是最簡單的一種Adapter,是字符串數值,只能在ListView顯示出文本信息。

          第二種是一種自定義的數據來源,要自定義布局方式,可以放置圖片,按鈕,文本之類的。

          第三種數據來源于數據庫。


          本文為第一種方式,ArrayAdapter,其他兩項的方法都差不多,主要是adapter不同。


          2、使用ListView步驟

          首先創建Listview組件,然后調用Listview.ArrayAdapter()方法,設置Adapter。


          通過調用setOnItemClickListener()接口方法,設置“點擊”listview某一項的監聽事件。

          通過調用setOnItemLongClickListener()接口方法,設置“長按”listview某一項的監聽事件。


          需要說明的是,當設置匿名內部類new OnItemClickListener()時,eclipse不會自動載入復寫函數,要點擊左邊的錯誤提示,然后Add unimplemented methods,才能載入復寫函數onItemClick()。


          1. mylistview.setOnItemClickListener(new OnItemClickListener() {  
          2.   
          3.     @Override  
          4.     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {  
          5.         // TODO Auto-generated method stub  
          6.           
          7.     }  
          8. });  

          關于onItemClick方法,下面詳細說說。(以下是官方的說明,參數命名不同而已,類型都是一樣的。arg0=parent,arg1=view,arg2=position,arg3=id)

          public abstract void onItemClick(AdapterView<?> parent,View view, int position, long id)

          Callback method to be invoked when an item in this AdapterView has been clicked.

          Implementers can call getItemAtPosition(position) if they need to access the data associated with the selected item.

          //當點擊listview某一項時,這個回調方法就會被調用。

          Parameters
          parent The AdapterView where the click happened.
          view The view within the AdapterView that was clicked (this will be a view provided by the adapter)
          position The position of the view in the adapter.
          id The row id of the item that was clicked.


          主要說說最后三個參數,

          view——————是你點擊的Listview的某一項的內容,來源于adapter。如用((TextView)arg1).getText(),可以取出點擊的這一項的內容,轉為string類型。

          position————是adapter的某一項,如點擊了listview第2項,而第2項對應的是adapter的第2個數值,那此時position的值就為1了。

                                       如對應adapter的第3個數值,那此時position的值就為2了。

          id———————id的值為點擊了Listview的哪一項對應的數值,點擊了listview第2項,那id就等于1。

          注:這些數值都是從0開始的。

          1. /*author:conowen 
          2.  * date:2012.2.26 
          3.  */  
          4. package com.conowen.listview;  
          5.   
          6. import android.app.Activity;  
          7. import android.os.Bundle;  
          8. import android.view.View;  
          9. import android.widget.AdapterView;  
          10. import android.widget.AdapterView.OnItemClickListener;  
          11. import android.widget.AdapterView.OnItemLongClickListener;  
          12. import android.widget.ArrayAdapter;  
          13. import android.widget.ListView;  
          14. import android.widget.TextView;  
          15. import android.widget.Toast;  
          16.   
          17. public class ListviewActivity extends Activity {  
          18.     /** Called when the activity is first created. */  
          19.     @Override  
          20.     public void onCreate(Bundle savedInstanceState) {  
          21.         super.onCreate(savedInstanceState);  
          22.         setContentView(R.layout.main);  
          23.         ListView lv = (ListView) findViewById(R.id.lv);  
          24.         String[] data = { "windows", "linux", "ios", "android", "wp7",  
          25.                 "Symbian" };// 定義adapter  
          26.         lv.setAdapter(new ArrayAdapter<String>(this,// 把adapter綁定到listview里面  
          27.                 android.R.layout.simple_expandable_list_item_1, data));  
          28.         // 點擊事件  
          29.         lv.setOnItemClickListener(new OnItemClickListener() {  
          30.   
          31.             @Override  
          32.             public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,  
          33.                     long arg3) {  
          34.                 // TODO Auto-generated method stub  
          35.                 Toast.makeText(ListviewActivity.this, "你點擊的是第" + arg3 + "項",  
          36.                         Toast.LENGTH_SHORT).show();  
          37.                 // 取出所點擊的那一項的id  
          38.   
          39.             }  
          40.   
          41.         });  
          42.         // 長按事件  
          43.         lv.setOnItemLongClickListener(new OnItemLongClickListener() {  
          44.   
          45.             @Override  
          46.             public boolean onItemLongClick(AdapterView<?> arg0, View arg1,  
          47.                     int arg2, long arg3) {  
          48.                 // TODO Auto-generated method stub  
          49.                 Toast.makeText(ListviewActivity.this,  
          50.                         ((TextView) arg1).getText(), Toast.LENGTH_LONG).show();  
          51.                 // 取出點擊listview某一項的內容  
          52.                 return false;  
          53.             }  
          54.   
          55.         });  
          56.     }  
          57. }  

          posted @ 2013-04-09 21:49 姚先進 閱讀(203) | 評論 (0)編輯 收藏
           
           for(String s:v)

           

          s是遍歷后賦值的變量,v是要遍歷的list。
          可以通過以下語句進行測試:
          List<String> v=new ArrayList();
          v.add("one");
          v.add("two");
          for(String s:v){
          System.out.println(s);
          }
          注意s要跟前面的類型匹配。

          s表示的其實就是v中得任意一個元素,v可以是數組,也可以是集合,如list或set。這種語句叫做foreach語句。其實就是Iterator迭代器的簡化,意思就是循環的從v中拿出一個元素s進行操作
          posted @ 2013-04-09 19:54 姚先進 閱讀(211) | 評論 (0)編輯 收藏
           


          2008-06-01 16:35:46|  分類: mysql |字號 訂閱

          1.response.setContentType("text/html;charset=gb2312");

          在做servlet的時候,在doGet中已經設定了response.setContentType("text/html;charset=gb2312");

          pw.println("姓名");   
               pw.println("性別"); 
               pw.println("郵箱"); 
               pw.println("地址"); 
               pw.println("權限"); 

          這些漢字的可以正確顯示,但是從數據庫中查詢返回的漢字顯示為亂碼:

          姓名 性別 郵箱 地址 權限
          admin 0 admin@163.com ???????? 1
          user1 0 user1@163.com ???????? 5
          user2 0 user2@163.com ???????? 5
          user3 0 user3@163.com ?????à?? 3
          user4 0 user4@163.com ???????¨ 3
          user5 0 user5@163.com ???????¨ 5
          user6 0 user6@163.com ???????¨ 5

          最近幾天一直都在學JSP,我用的數據庫是Mysql。在連接數據庫的過程中,剛開始我只是簡單的執行了查詢命令,發現從數據庫取出的中文數據全部顯示成了亂碼,查了一些資料之后,我先用了下面的一個轉換函數,值得高興的是,讀出的中文顯示正常:

               

               

               將從Mysql數據庫中得到的中文數據,通過以下轉換函數 String trans(String chi)進行處理,即可正常顯示中文:

              

              String trans(String chi) {

                  String result = null;

                  byte temp[];

                  try {

                      temp = chi.getBytes("iso-8859-1");

                      result = new String(temp);

                  } catch(UnsupportedEncodingException e) {

                      System.out.println(e.toString());

                  }

                  return result;

          }

          但很快,我意識到這種方法只是治標不治本,因為在插入中文數據時,又沒法在Mysql中正常顯示中文。而真正治本的方法是,將Mysql的編碼格式由默認的latin1改成gb2312.

          改的步驟如下:

          1.      設置Mysql的編碼格式(注意是在創建數據庫之前就要設置)

          找到Mysql安裝目錄下的 myini文件,用記事本打開,找到以下兩句:

          [mysql]

          default-character-set=latin1

          --------------------------------------------------------------------------------------------------

          [mysqld]

          # The TCP/IP Port the MySQL Server will listen on

          port=3306

          #Path to installation directory. All paths are usually resolved relative to this.

          basedir="C:/Program Files/MySQL/MySQL Server 5.0/"

          #Path to the database root

          datadir="C:/Program Files/MySQL/MySQL Server 5.0/Data/"

          # The default character set that will be used when a new schema or table is

          # created and no character set is defined

          default-character-set=latin1

                            我們需要做的是將這兩處的默認編碼格式由“latin1”改成“gb2312”。

                            改好之后,重啟Mysql

          2.      Mysql中開始創建數據庫

             用相關命令創建數據庫,表等

          注意: 在創建表時要加上一句 TYPE=MyISAM, default character set gb2312;

              

             如以下示例:

              create table student

              -> (sno varchar(20),

              -> sname varchar(10),

              -> sex char(2),

              -> age numeric(2),

              -> dept varchar(20),

              -> primary key(sno))

              -> type=myisam,default character set gb2312;

              

          3.      Java文件或者JSP文件中連接數據庫

             Java代碼中:

          str = "com.mysql.jdbc.Driver";

          url="jdbc:mysql://localhost:3306/example?useUnicode=true&characterEncoding=gb2312";

          user = "root";

          password = "123456";

                      

          Class.forName(str).newInstance();

               conn = DriverManager.getConnection(url,user,password);

             JSP中需要注意的有:

          <%@page contentType="text/html"%>

          <%@page pageEncoding="gb2312" %>

          <%@ page import="java.sql.*,java.io.*" %>

          gb2312">

                       

                       OK,經過上述一些設置之后,JAVAMysql將不會再出現中文顯示亂碼!

          posted @ 2013-04-09 16:34 姚先進 閱讀(405) | 評論 (0)編輯 收藏
           

          在android中,有很多功能是不能放在onCreate或者onStart方法里面,因為這些功能相對

          來說費時比較長,比如說下載一個文件,下載的過程比較長,但是如果寫在Activity中,

          那么這段時間Activity是完全沒有響應的,那么就可以將這種處理大量數據或者耗時比較

          長的東西放在一個單獨的線程中來完成,即Activity是一個線程,而下載的是在另外一個

          線程,那么這樣就可以使得下載跟Activity之間互不影響,從而得到了良好的用戶體驗

           

          這里有兩種隊列,一種是線程隊列,就是用postXX方法或者removeCallbacks方法對線程對象的操作。另一種是消息隊列,用sendMessage和handleMessage方法來對消息對象進行處理

           



           

          handler采用的是一個消息隊列的方式,每一個handler都有一個與之關聯的消息隊列,而且是先進先出的方式執行,即:每次加入一個handler,然后拿出來,對其進行處理,然后再拿出另一個,再進行處理

           

          例子一:這個例子僅僅是對線程對象進行操作的測試

          Java代碼  收藏代碼
          1. package org.hualang.handler;  
          2.   
          3. import android.app.Activity;  
          4. import android.os.Bundle;  
          5. import android.os.Handler;  
          6. import android.view.View;  
          7. import android.widget.Button;  
          8.   
          9. public class HandlerTest extends Activity {  
          10.       
          11.     private Button mybutton1;  
          12.     private Button mybutton2;  
          13.     @Override  
          14.     public void onCreate(Bundle savedInstanceState) {  
          15.         super.onCreate(savedInstanceState);  
          16.         setContentView(R.layout.main);  
          17.           
          18.         mybutton1 = (Button)findViewById(R.id.mybutton1);  
          19.         mybutton2 = (Button)findViewById(R.id.mybutton2);  
          20.           
          21.         mybutton1.setOnClickListener(new Button.OnClickListener()  
          22.         {  
          23.   
          24.             @Override  
          25.             public void onClick(View arg0) {  
          26.                 /** 
          27.                  * 調用Handler的post方法,將要執行的線程對象添加到 
          28.                  * 線程隊列中 
          29.                  */  
          30.                 handler.post(updateThread);  
          31.             }  
          32.               
          33.         });  
          34.         mybutton2.setOnClickListener(new Button.OnClickListener()  
          35.         {  
          36.   
          37.             @Override  
          38.             public void onClick(View v) {  
          39.                 // TODO Auto-generated method stub  
          40.                 handler.removeCallbacks(updateThread);  
          41.             }  
          42.               
          43.         });    
          44.           
          45.     }  
          46.     //創建Handler對象  
          47.     Handler handler = new Handler();  
          48.     /** 
          49.      * 將要執行的操作卸載寫入線程對象的run()方法當中 
          50.      */  
          51.     Runnable updateThread = new Runnable()  
          52.     {  
          53.         public void run()  
          54.         {  
          55.             System.out.println("更新線程");  
          56.             //在run方法內部,執行postXX的方法,每隔3秒會執行一次  
          57.             handler.postDelayed(updateThread, 3000);  
          58.         }  
          59.     };  
          60. }  

           

          運行結果如下:



           程序解釋:首先創建一個Handler對象,然后創建一個繼承自Runnable接口的線程

          程序首先點擊按鈕“開始”,于是會馬上執行post方法,將執行的線程對象添加到線程隊列中,這時會馬上執行

          Java代碼  收藏代碼
          1. public void run()  
          2.         {  
          3.             System.out.println("更新線程");  
          4.             //在run方法內部,執行postXX的方法,每隔3秒會執行一次  
          5.             handler.postDelayed(updateThread, 3000);  
          6.         }  

           

          然后,執行postDelayed方法,由于里面設置的間隔時間,所以每3秒會調價一個handler對象到線程隊列中,并且一直執行,直到點擊“結束”按鈕,調用removeCallbacks方法將其從線程隊列中移除

           

           

          例子2:下面的例子將簡單的對線程對象和消息對象進行處理

          Java代碼  收藏代碼
          1. package org.hualang.handlertest2;  
          2.   
          3. import android.app.Activity;  
          4. import android.os.Bundle;  
          5. import android.os.Handler;  
          6. import android.os.Message;  
          7. import android.view.View;  
          8. import android.widget.Button;  
          9. import android.widget.ProgressBar;  
          10.   
          11. public class HandlerTest2 extends Activity {  
          12.     private ProgressBar bar = null;  
          13.     private Button start = null;  
          14.     @Override  
          15.     public void onCreate(Bundle savedInstanceState) {  
          16.         super.onCreate(savedInstanceState);  
          17.         setContentView(R.layout.main);  
          18.         bar = (ProgressBar)findViewById(R.id.progress1);  
          19.         start = (Button)findViewById(R.id.start);  
          20.         start.setOnClickListener(new Button.OnClickListener()  
          21.         {  
          22.   
          23.             @Override  
          24.             public void onClick(View v) {  
          25.                 bar.setVisibility(View.VISIBLE);  
          26.                 handler.post(handlerThread);  
          27.             }  
          28.               
          29.         });  
          30.     }  
          31.     /** 
          32.      * 使用匿名內部類來復寫hanlder當中的hanldrMessage方法 
          33.      * 這里的msg對象就是從線程部分發送過來的對象 
          34.      */  
          35.     Handler handler = new Handler()  
          36.     {  
          37.         public void handleMessage(Message msg)  
          38.         {  
          39.             bar.setProgress(msg.arg1);  
          40.             handler.post(handlerThread);  
          41.         }  
          42.     };  
          43.     //線程類,該類使用的是匿名內部類的方式進行聲明  
          44.     Runnable handlerThread = new Runnable()  
          45.     {  
          46.         int i = 0;  
          47.         public void run()  
          48.         {  
          49.             System.out.println("開始線程");  
          50.             i = i + 10;  
          51.             /** 
          52.              * 得到一個消息對象,Message類是由android操作系統提供 
          53.              * obtainMessage方法用來得到Message對象 
          54.              */  
          55.             Message msg = handler.obtainMessage();  
          56.             /** 
          57.              * Message中有個成員變量,即msg獨享的arg1參數 
          58.              * 將其值設置為i。用arg1或arg2這兩個成員變量傳遞 
          59.              * 消息,優點是系統性能消耗較少 
          60.              */  
          61.             msg.arg1 = i;  
          62.             try {  
          63.                 //當前線程休眠1秒  
          64.                 Thread.sleep(5000);  
          65.             } catch (InterruptedException e) {  
          66.                 // TODO Auto-generated catch block  
          67.                 e.printStackTrace();  
          68.             }  
          69.             /** 
          70.              * 發送一個消息,用sendMessage是將msg加入到消息 
          71.              * 隊列中。而post是將線程加入到線程隊列中 
          72.              */  
          73.             handler.sendMessage(msg);  
          74.             if( i == 100)  
          75.             {  
          76.                 /** 
          77.                  * 如果i=100的時候,就將線程對象 
          78.                  * 從handler當中移除 
          79.                  */  
          80.                 handler.removeCallbacks(handlerThread);  
          81.                 bar.setVisibility(View.GONE);  
          82.             }  
          83.         }  
          84.     };  
          85. }  

            

          main.xml

          Xml代碼  收藏代碼
          1. <?xml version="1.0" encoding="utf-8"?>  
          2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
          3.     android:orientation="vertical"  
          4.     android:layout_width="fill_parent"  
          5.     android:layout_height="fill_parent"  
          6.     >  
          7. <ProgressBar  
          8.     android:id="@+id/progress1"  
          9.     android:layout_width="fill_parent"  
          10.     android:layout_height="wrap_content"  
          11.     android:visibility="gone"  
          12.     style="?android:attr/progressBarStyleHorizontal"  
          13. />  
          14. <Button  
          15.     android:id="@+id/start"  
          16.     android:layout_width="wrap_content"  
          17.     android:layout_height="wrap_content"  
          18.     android:gravity="center"  
          19.     android:text="點擊我"  
          20. />  
          21. </LinearLayout>  

           

          運行結果:



           

           

          程序說明:

          1、當點擊按鈕后,會執行按鈕的onClick方法中的

          Java代碼  收藏代碼
          1. bar.setVisibility(View.VISIBLE);  
          2. handler.post(handlerThread);  

           將進度條顯示出來,并且將線程對象加入到線程隊列中

          2、線程對象對先打印出一個“開始線程”,然后i的值增加10,然后從系統中獲取一個Message對象

          3、將i賦給Message對象的參數arg1

          4、當前線程休眠5秒,然后通過sendMessage方法發送一個Message對象發送到消息隊列中

          5、然后再執行,通過handleMessage方法設置進度條的值,并且將其加入到進程隊列中

          Java代碼  收藏代碼
          1. Handler handler = new Handler()  
          2.     {  
          3.         public void handleMessage(Message msg)  
          4.         {  
          5.             bar.setProgress(msg.arg1);  
          6.             handler.post(handlerThread);  
          7.         }  
          8.     };  

           6、循環執行,直到i=100,進度條隱藏,并將線程對象從線程隊列中取出






          對于Handler來說,它和與它調用它的Activity是出于同一線程的,上一篇并沒有調用線程
          的start方法,而是直接執行的run方法。而啟動一個線程是調用的start方法

          上一篇博客里的對Handler的調用時通過Runnable接口來實現的,并且是通過run()方法來啟動那個線程的,而且是Activity和 Handler是兩個線程獨立運行的,互補干擾,但是實際情況確實,Activity所在的線程和Handler的線程是同一個線程,下面進行一下實驗

           

          Java代碼  收藏代碼
          1. package org.hualang.handlertest3;  
          2.   
          3. import android.app.Activity;  
          4. import android.os.Bundle;  
          5. import android.os.Handler;  
          6. import android.util.Log;  
          7.   
          8. public class HandlerTest3 extends Activity {  
          9.     private Handler handler = new Handler();  
          10.     private String TAG = "System.out";  
          11.     @Override  
          12.     public void onCreate(Bundle savedInstanceState) {  
          13.         super.onCreate(savedInstanceState);  
          14.         handler.post(r);  
          15.         setContentView(R.layout.main);  
          16.         //Thread t = new Thread(r);  
          17.         //t.start();  
          18.           
          19.         Log.d(TAG,"Activity id:"+Thread.currentThread().getId());  
          20.         Log.d(TAG,"Activity name:"+Thread.currentThread().getName());  
          21.           
          22.     }  
          23.     Runnable r = new Runnable()  
          24.     {  
          25.         public void run()  
          26.         {  
          27.             Log.d(TAG,"Handler id:"+Thread.currentThread().getId());  
          28.             Log.d(TAG,"Handler name:"+Thread.currentThread().getName());  
          29.             try {  
          30.                 Thread.sleep(5000);  
          31.             } catch (InterruptedException e) {  
          32.                 // TODO Auto-generated catch block  
          33.                 e.printStackTrace();  
          34.             }  
          35.         }  
          36.     };  
          37. }  

           

          運行結果:

          證明是同一個線程的兩個依據:

          ①Activity的id或name和Handler的id或name是同樣的

          ②我設置了

           handler.post(r);
           setContentView(R.layout.main);

          也就是,如果執行后馬上顯示文本信息,那么可以證明它們不在同一個線程,但是實際情況是要先執行了handler后5秒,才顯示文本信息,說明它們在同一線程



           

           

          如果將代碼改為

          Java代碼  收藏代碼
          1. //handler.post(r);  
          2. setContentView(R.layout.main);  
          3. Thread t = new Thread(r);  
          4. t.start();  

           再次執行,運行結果如下,通過start啟動線程,它們不在同一個線程中

           

           

          ----------------------------------------------------------------------------------------------------------------

          Looper即循環的從隊列當中取得消息的功能,如果在線程中使用Looper
          那么,就會循環的從線程隊列當中取得消息并處理,如果隊列當中沒有消息的話
          ,線程就進入了休眠狀態

          Looper很少自己創建,在Android中給出了HandlerThread類,并且具有循環取得并處理消息的功能

           

          下面來實現這種Activity和Handler分別在兩個線程中執行,實現真正的異步處理

          Java代碼  收藏代碼
          1. package org.hualang.handlertest;  
          2.   
          3. import android.app.Activity;  
          4. import android.os.Bundle;  
          5. import android.os.Handler;  
          6. import android.os.HandlerThread;  
          7. import android.os.Looper;  
          8. import android.os.Message;  
          9. import android.util.Log;  
          10.   
          11. public class HandlerTest4 extends Activity {  
          12.     /** Called when the activity is first created. */  
          13.     @Override  
          14.     public void onCreate(Bundle savedInstanceState) {  
          15.         super.onCreate(savedInstanceState);  
          16.         setContentView(R.layout.main);  
          17.         Log.d("System.out","Activity所在線程的id:"+Thread.currentThread().getId());  
          18.         /** 
          19.          * 生成一個HandlerThread對象,實現了使用Looper來處理消息隊列的功能 
          20.          * 這個類由Android應用程序框架提供 
          21.          */  
          22.         HandlerThread handlerThread = new HandlerThread("handlerThread");  
          23.         handlerThread.start();  
          24.         MyHandler handler = new MyHandler(handlerThread.getLooper());  
          25.         Message msg = handler.obtainMessage();  
          26.         /** 
          27.          * 將Message對象發送到目標對象 
          28.          * 所謂的目標對象,就是生成該msg對象的handler對象 
          29.          */  
          30.         msg.sendToTarget();  
          31.     }  
          32.     class MyHandler extends Handler  
          33.     {  
          34.         public MyHandler()  
          35.         {     
          36.         }  
          37.         public MyHandler(Looper looper)  
          38.         {  
          39.             super(looper);  
          40.         }  
          41.         public void handleMessage(Message msg)  
          42.         {  
          43.             Log.d("System.out", "handler所在線程的id:"+Thread.currentThread().getId());  
          44.         }  
          45.     }  
          46. }  

           

          運行結果:



           

          可以看到,Activity和Handler是在兩個不同的線程中執行的,這樣就是實現了真正的異步處理

          1、首先創建一個HandlerThread對象,這個HandlerThread類實現了循環的取得消息并處理

          2、用start方法啟動一個新線程

          3、創建MyHandler類,里面傳遞的參數即Looper方法所獲得的可以循環在隊列中取得的消息

          4、MyHandler類調用的是帶參數Looper的構造方法,并且實現了handlerMessage方法

          5、獲取一個Message對象

          6、將這個對象發送到生成該msg對象的handler對象,從而執行了handleMessage方法

           

          -----------------------------------------------------------------------------------------------------

          最后,將說一下Message里傳送的數據的使用,這里的msg對象可以使用arg1,arg2或者obj

          arg1 and arg2 are lower-cost alternatives to using setData() if you only need to store a few integer values. 也就是相對于setData()方法,如果你僅僅保存一些簡單的整形數的話,arg1,arg2對資源的要求較低,而setData()方法一般用于傳遞 大量數據的時候會用到

           

          如果是msg.obj,那么可以這樣用

          msg.obj = "Welcome to china";

          然后在handleMessage()方法中用

          String str = (String)msg.obj;來獲得傳遞的值

           

          如果使用getData()方法的話,需要用到Bundle對象來傳遞,下面用個例子來說明

          Java代碼  收藏代碼
          1. Bundle b = new Bundle();  
          2. b.putInt("age", 22);  
          3. b.putString("name", "loulijun");  
          4. msg.setData(b);  
          5. msg.sendToTarget();  

           

          上面的代碼用來設置要傳遞的數據

          下面的代碼用來獲取Bundle傳遞過來的數據并且用Toast來顯示

          Java代碼  收藏代碼
          1. Bundle b = msg.getData();  
          2.             int age = b.getInt("age");  
          3.             String name = b.getString("name");  
          4.             Toast toast = Toast.makeText(getApplicationContext(), "age="+age+"name="+name, Toast.LENGTH_LONG);  
          5.             toast.show();  

           

          package org.hualang.handlertest;

          import android.app.Activity;
          import android.os.Bundle;
          import android.os.Handler;
          import android.os.HandlerThread;
          import android.os.Looper;
          import android.os.Message;
          import android.util.Log;
          import android.widget.Toast;

          public class HandlerTest4 extends Activity {
              /** Called when the activity is first created. */
              @Override
              public void onCreate(Bundle savedInstanceState) {
                  super.onCreate(savedInstanceState);
                  setContentView(R.layout.main);
                  Log.d("System.out","Activity所在線程的id:"+Thread.currentThread().getId());
                  /**
                   * 生成一個HandlerThread對象,實現了使用Looper來處理消息隊列的功能
                   * 這個類由Android應用程序框架提供
                   */
                  HandlerThread handlerThread = new HandlerThread("handlerThread");
                  /**
                   * 使用HandlerThread的getLooper()方法之前,必須先調用該類的start()方法,否則是個null,會報錯
                   */
                  handlerThread.start();
                  MyHandler handler = new MyHandler(handlerThread.getLooper());
                  Message msg = handler.obtainMessage();
                  /**
                   * 將Message對象發送到目標對象
                   * 所謂的目標對象,就是生成該msg對象的handler對象
                   */
                  //msg.obj = "Hello world";
                  Bundle b = new Bundle();
                  b.putInt("age", 22);
                  b.putString("name", "loulijun");
                  msg.setData(b);
                  msg.sendToTarget();
              }
              class MyHandler extends Handler
              {
              public MyHandler()
              {
              }
              public MyHandler(Looper looper)
              {
              super(looper);
              }
              public void handleMessage(Message msg)
              {
              //String str = (String)msg.obj
              Bundle b = msg.getData();
              int age = b.getInt("age");
              String name = b.getString("name");
              Toast toast = Toast.makeText(getApplicationContext(), "age="+age+"name="+name, Toast.LENGTH_LONG);
              toast.show();
              Log.d("System.out", "handler所在線程的id:"+Thread.currentThread().getId());
              }
              }
          }

           運行結果:



           

           


          posted @ 2013-04-09 09:36 姚先進 閱讀(265) | 評論 (0)編輯 收藏
           

          創建HttpServlet的步驟

          0人收藏此文章, 我要收藏 發表于3年前(2009-05-31 15:58) , 已有955次閱讀 ,共0個評論

          創建用戶自己的HttpServlet類。通常涉及下列4個步驟

          1. 擴展HttpServlet抽象類
          2. 覆蓋HttpServlet的部分方法,例如覆蓋doGet()和doPost()方法
          3. 獲取HTTP請求信息。例如通過HttpServletRequest對象來檢索HTML表單所提交的數據或URL上的查詢字符串。無論是 HTML表單數據還是URL上的查詢字符串,在HttpServletRequest對象中都以參數名/參數值的形式存放,可以通過以下方法檢索參數信 息:
          •  getParameterNames():  返回一個Enumeration對象。它包含了所有的參數名信息
          •  getParameter(String name): 返回參數名name對應的參數值
          •  getParamaterValues(): 返回一個Enumeration對象,它包含了所有的參數值信息

             4.生成HTTP響應結果。通過HttpServletResponse對象可以生成響應結果。HttpServletResponse對象有一個 getWriter()方法,該方法返回一個PrintWriter對象。使用PrintWriter的print()或println()方法可以向客 戶端發送字符串數據流。

           例子: 提供一個Servlet樣例(HelloServlet.java)

          package com.myServlet

            import  javax.servlet.*;
            import  javax.servlet.http.*;
            import java.io.*;

            public class HelloServlet extends HttpServlet     // 第一步:擴展HttpServlet抽象類
           {

            // 第二步: 覆蓋doGet()方法
             public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException ,ServletException{

           //  第三步: 獲取HTTP請求中的參數信息

             String clientName=request.getParameter("clientName");

             if(clientName!=null)

              clientName=new String(clientName.getBytes("ISO-8859-1"),"GB2312");

          else

           clientName="你好"

           // 第四步

           PrintWriter out;
           String title="HelloServlet";
           String heading1="This is output from HelloServlet by doGet:";
            response.setContentType("text/html;charset=GB2312");

           out=response.getWriter();

          out.print("<HTML><HEAD><TITLE>"+title+"</TITLE>);

           out.print("</HEAD><BODY>")

          out.print(heading1);

          out.println("<h1><P>"+clientName+":你好</h1>"+);

          out.print("</BODY></HTML>");

          out.close();

               }

           }

          上述HelloServlet類擴展HttpServlet抽象類,覆蓋了doGet方法。在重寫的doGet方法中,通過 getParameter方法讀取HTTP請求中的一個參數ClientName。在上述代碼中,為了解決漢化問題,做了必要的轉碼工作??蛻籼峤坏牟樵?數據采用默認的ISO-8859-1編碼,應該把它轉換為中文編碼GB2312:

            // 字符編碼轉換

             clientName=new String(clientName.getBytes(“ISO-8859-1”),"GB2312");

          // 設置輸出響應數據的字符編碼

           response.setContentType("text/html;charset=GB2312");

          HellowServlet.class 的存放位置為:

           <CATALINA_HOME>/webapps/helloapp/WEB-INF/classes/mypack/HelloServlet.class

          在Web.xml中位HelloServlet類加上如下<servlet>和<servlet-mapping>元素:

           <servlet>

             <servlet-name>HelloServlet</servlet-name>
            <servlet-class>mypackCounterServlet</servlet-class>

          </servlet>

          <servlet-mapping>HelloServlet</servlet-mapping>

          <url-pattern>/hello</url-pattern>

          </servlet-mapping>

          然后通過如下URL訪問HelloServlet:

          posted @ 2013-03-14 20:40 姚先進 閱讀(277) | 評論 (0)編輯 收藏
           

          有些網友不知道怎么才能運行自己的JSP文件,我在這里簡單介紹一下,給大家提供一點參考:
          1. 下載并安裝tomcat。下載地址:http://jakarta.apache.org/tomcat
          2. 編寫自己的JSP網頁和Java對象。
          3. 配置自己的Web應用。配置方法:
             在TOMCAT_HOME/conf/server.xml文件中加入一行:
             <Content path="/appName" docBase="webapps/appName" debug="0" reloadable="true"/>
             其中,TOMCAT_HOME是tomcat的主目錄,appName是你的Web應用的名稱。
          4. 將你的jsp文件、html文件、image文件拷貝到TOMCAT_HOME/webapps/appName目錄下。
          5. 編譯你的java文件。
          6. 將編譯好的class文件拷貝到TOMCAT_HOME/webapps/WEB-INF/classes目錄下。也可將class文件打包成jar文件放到TOMCAT_HOME/webapps/WEB-INF/lib目錄下。
          7. ALL IS OK! 你可以在你的瀏覽器上看到你的成果了:
             http://localhost:8080/appName/youjsp.jsp
             其中,appName是你配的Web應用名稱,youjsp.jsp是你編寫的jsp文件名。

          posted @ 2013-03-14 19:46 姚先進 閱讀(227) | 評論 (0)編輯 收藏
           
          1.輸入密碼:******
          2.ues mysql;使用Mysql
          3.show databases;顯示數據庫
          4.use register;使用數據庫名為register
          5.show tables;顯示register數據庫中的表
          6.describe user;對表user進行操作:

          insert into user(username,password) values("xiaoyan","123456");插入數據
          insert into user(username,password) values("ff","123456");插入數據
          delete from user where username="xiaoyan";刪除數據
          update user set username="xiaoyan" where username="ff";更新數據
          select * from user;查詢數據

          7.quit;推出
          1、顯示當前數據庫服務器中的數據庫列表:
          mysql> SHOW DATABASES;
          注意:mysql庫里面有MYSQL的系統信息,我們改密碼和新增用戶,實際上就是用這個庫進行操作。
          2、顯示數據庫中的數據表:
          mysql> USE 庫名;
          mysql> SHOW TABLES;
          3、顯示數據表的結構:
          mysql> DESCRIBE 表名;
          4、建立數據庫:
          mysql> CREATE DATABASE 庫名;
          5、建立數據表:
          mysql> USE 庫名;
          mysql> CREATE TABLE 表名 (字段名 VARCHAR(20), 字段名 CHAR(1));
          6、刪除數據庫:
          mysql> DROP DATABASE 庫名;
          7、刪除數據表:
          mysql> DROP TABLE 表名;
          8、將表中記錄清空:
          mysql> DELETE FROM 表名;
          9、顯示表中的記錄:
          mysql> SELECT * FROM 表名;
          10、往表中插入記錄:
          mysql> INSERT INTO 表名 VALUES (”hyq”,”M”);
          11、更新表中數據:
          mysql-> UPDATE 表名 SET 字段名 1=’a',字段名2=’b’ WHERE 字段名3=’c';
          12、用文本方式將數據裝入數據表中:
          mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE 表名;
          13、導入.sql文件命令:
          mysql> USE 數據庫名;
          mysql> SOURCE d:/mysql.sql;
          14、命令行修改root密碼:
          mysql> UPDATE mysql.user SET password=PASSWORD(’新密碼’) WHERE User=’root’;
          mysql> FLUSH PRIVILEGES;
          15、顯示use的數據庫名:
          mysql> SELECT DATABASE();
          16、顯示當前的user:
          mysql> SELECT USER();

          一、啟動與退出

          1、進入MySQL:啟動MySQL Command Line Client(MySQL的DOS界面),直接輸入安裝時的密碼即可。此時的提示符是:mysql&gt;

          2、退出MySQL:quitexit


          二、庫操作

          1、創建數據庫

          命令:create database

          例如:建立一個名為xhkdb的數據庫

          mysql> create database xhkdb;


          2、顯示所有的數據庫

          命令:show databases (注意:最后有個s)

          mysql> show databases;


          3、刪除數據庫

          命令:drop database

          例如:刪除名為 xhkdb的數據庫

          mysql> drop database xhkdb;


          4、連接數據庫

          命令: use

          例如:如果xhkdb數據庫存在,嘗試存取它:

          mysql> use xhkdb;

          屏幕提示:Database changed


          5、當前選擇(連接)的數據庫

          mysql> select database();


          6、當前數據庫包含的表信息:

          mysql> show tables; (注意:最后有個s)


          三、表操作,操作之前應連接某個數據庫

          1、建表

          命令:create table ( [,.. ]);

          mysql> CREATE TABLE `testa` (
              ->   `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
              ->   `name` varchar(20) DEFAULT NULL ,
              ->   PRIMARY KEY (`id`)
              -> ) ENGINE=MyISAM AUTO_INCREMENT=65 DEFAULT CHARSET=utf8;


          2、獲取表結構

          命令: desc 表名,或者show columns from 表名

          mysql> DESCRIBE MyClass

          mysql> desc MyClass;

          mysql> show columns from MyClass;


          3、刪除表

          命令:drop table

          例如:刪除表名為 MyClass 的表

          mysql> drop table MyClass;


          4、插入數據

          命令:insert into [( [,.. ])] values ( 值1 )[, ( 值n )]


          5、查詢表中的數據

          1)、查詢所有行

          mysql> select * from MyClass;


          2)、查詢前幾行數據

          mysql> select * from MyClass order by id limit 0,2;


          6、刪除表中數據

          命令:delete from 表名 where 表達式

          例如:刪除表 MyClass中編號為1 的記錄

          mysql> delete from MyClass where id=1;


          7、修改表中數據:update 表名 set 字段=新值,… where 條件

          mysql> update MyClass set name=”Mary” where id=1;


          8、在表中增加字段:

          命令:alter table 表名 add字段 類型其他;

          例如:在表MyClass中添加了一個字段passtest,類型為int(4),默認值為0

          mysql> alter table MyClass add passtest int(4) default ”0”


          9、更改表名:

          命令:rename table 原表名 to 新表名;

          例如:在表MyClass名字更改為YouClass

          mysql> rename table MyClass to YouClass;
          posted @ 2013-03-13 12:46 姚先進 閱讀(2327) | 評論 (0)編輯 收藏
          僅列出標題
          共7頁: 上一頁 1 2 3 4 5 6 7 下一頁 
           
          主站蜘蛛池模板: 云和县| 延川县| 平顺县| 栾川县| 韶山市| 乐都县| 泰宁县| 柳林县| 疏附县| 大城县| 德保县| 奎屯市| 聂拉木县| 临江市| 木兰县| 长岛县| 长沙市| 潼南县| 聂拉木县| 类乌齐县| 湖北省| 房山区| 同心县| 正安县| 建阳市| 洛浦县| 会东县| 黎川县| 丰台区| 安阳县| 象山县| 娄底市| 阿坝| 永泰县| 开封市| 临夏市| 古交市| 巢湖市| 德安县| 苍南县| 乐平市|