2012-06-18 140 views
-1

你好,我已经使我的应用程序现在6个月。 iv一直在研究我的布局和编码等。 现在为上个月iv一直试图建立一个数据库。但我无法理解这个问题。我已经完成了android记事本教程,并且我已经下载了SQLite数据库浏览器。甚至我从记事本v3有一个工作数据库(添加&删除数据)我只是不知道我是否可以在我的项目中使用这个数据库演示。我可以使用数据库演示

此外,我在一些堆栈溢出页面(现在找不到它)和有人把一个链接到一个数据库演示zip文件,其中我下载,当我运行它。它正是在之后。 希望你们可以帮助我,让我知道,如果我可以使用这个数据库演示作为我自己的..

不要误会我不想找一个简单的方法,使我自己的数据库或学习关于它。

在android世界中有很多东西需要学习。如果我有一个工作的数据库,我可以在其他项目上使用,我将沿着编码的方式学习.. 这里是数据库演示的java代码它有点沉重所有这一切很抱歉 如果你想看到我的XML请只说..

 package mina.android.DatabaseDemo; 
     import android.app.Activity; 
     import android.app.Dialog; 
     import android.database.Cursor; 
     import android.os.Bundle; 
     import android.text.Spannable; 
     import android.view.View; 
     import android.widget.AdapterView; 
     import android.widget.EditText; 
     import android.widget.SimpleCursorAdapter; 
     import android.widget.Spinner; 
     import android.widget.TextView; 
     import android.widget.AdapterView.OnItemSelectedListener; 

     public class AddEmployee extends Activity { 
     EditText txtName; 
     EditText txtAge; 
     TextView txtEmps; 
     DatabaseHelper dbHelper; 
     Spinner spinDept; 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.addemployee); 
     txtName=(EditText)findViewById(R.id.txtName); 
     txtAge=(EditText)findViewById(R.id.txtAge); 
     txtEmps=(TextView)findViewById(R.id.txtEmps); 
     spinDept=(Spinner)findViewById(R.id.spinDept); 
     } 

    @Override 
    public void onStart() 
    { 
    try 
    { 
    super.onStart(); 
    dbHelper=new DatabaseHelper(this); 



     txtEmps.setText(txtEmps.getText()+String.valueOf(dbHelper.getEmployeeCount())); 

    Cursor c=dbHelper.getAllDepts(); 
    startManagingCursor(c); 



    //SimpleCursorAdapter ca=new 

     SimpleCursorAdapter(this,android.R.layout.simple_spinner_item, c, new String [] 

     {DatabaseHelper.colDeptName}, new int []{android.R.id.text1}); 
    SimpleCursorAdapter ca=new 

     SimpleCursorAdapter(this,R.layout.deptspinnerrow, c, new String [] 


     {DatabaseHelper.colDeptName,"_id"}, new int []{R.id.txtDeptName}); 



     //ca.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

    spinDept.setAdapter(ca); 
    spinDept.setOnItemSelectedListener(new OnItemSelectedListener() { 

     public void onItemSelected(AdapterView<?> parent, View 
        selectedView, 
       int position, long id) { 
      // TODO Auto-generated method stub 

     } 

     public void onNothingSelected(AdapterView<?> arg0) { 
      // TODO Auto-generated method stub 

     } 
    }); 


    //never close cursor 
    } 
    catch(Exception ex) 
    { 
     CatchError(ex.toString()); 
    } 
    } 

    public void btnAddEmp_Click(View view) 
    { 
    boolean ok=true; 
    try 
    { 
     Spannable spn=txtAge.getText(); 
     String name=txtName.getText().toString(); 
     int age=Integer.valueOf(spn.toString()); 
     int deptID=Integer.valueOf((int)spinDept.getSelectedItemId()); 
     Employee emp=new Employee(name,age,deptID); 

     dbHelper.AddEmployee(emp); 

    } 
    catch(Exception ex) 
    { 
     ok=false; 
     CatchError(ex.toString()); 
    } 
    finally 
    { 
     if(ok) 
     { 
      //NotifyEmpAdded(); 
      Alerts.ShowEmpAddedAlert(this); 
      txtEmps.setText("Number of employees 

         "+String.valueOf(dbHelper.getEmployeeCount())); 
     } 
     } 
    } 

     void CatchError(String Exception) 
    { 
    Dialog diag=new Dialog(this); 
    diag.setTitle("Add new Employee"); 
    TextView txt=new TextView(this); 
    txt.setText(Exception); 
    diag.setContentView(txt); 
    diag.show(); 
    } 

    void NotifyEmpAdded() 
    { 
    Dialog diag=new Dialog(this); 
    diag.setTitle("Add new Employee"); 
    TextView txt=new TextView(this); 
    txt.setText("Employee Added Successfully"); 
    diag.setContentView(txt); 
    diag.show(); 
    try { 
     diag.wait(1000); 
    } catch (InterruptedException e) { 
     // TODO Auto-generated catch block 
     CatchError(e.toString()); 
    } 
    diag.notify(); 
    diag.dismiss(); 
    } 

     } 

    package mina.android.DatabaseDemo; 


    import android.app.AlertDialog; 
    import android.app.Dialog; 
    import android.content.Context; 
    import android.content.DialogInterface; 
    import android.content.DialogInterface.OnClickListener; 
    import android.view.LayoutInflater; 
    import android.view.View; 
    import android.widget.Spinner; 
    import android.widget.TextView; 

    public class Alerts { 
    public static void ShowEmpAddedAlert(Context con) 
    { 
    AlertDialog.Builder builder=new AlertDialog.Builder(con); 
    builder.setTitle("Add new Employee"); 
    builder.setIcon(android.R.drawable.ic_dialog_info); 
    DialogListner listner=new DialogListner(); 
    builder.setMessage("Employee Added successfully"); 
    builder.setPositiveButton("ok", listner); 

    AlertDialog diag=builder.create(); 
    diag.show(); 
     } 




    public static AlertDialog ShowEditDialog(final Context con,final Employee emp) 
    { 
    AlertDialog.Builder b=new AlertDialog.Builder(con); 
    b.setTitle("Employee Details"); 
    LayoutInflater li=LayoutInflater.from(con); 
    View v=li.inflate(R.layout.editdialog, null); 

    b.setIcon(android.R.drawable.ic_input_get); 

    b.setView(v); 
    final TextView txtName=(TextView)v.findViewById(R.id.txtDelName); 
    final TextView txtAge=(TextView)v.findViewById(R.id.txtDelAge); 
    final Spinner spin=(Spinner)v.findViewById(R.id.spinDiagDept); 
    Utilities.ManageDeptSpinner(con, spin); 
    for(int i=0;i<spin.getCount();i++) 
    { 
    long id=spin.getItemIdAtPosition(i); 
    if(id==emp.getDept()) 
    { 
     spin.setSelection(i, true); 
     break; 
     } 
     } 


    txtName.setText(emp.getName()); 
    txtAge.setText(String.valueOf(emp.getAge())); 

    b.setPositiveButton("Modify", new OnClickListener() { 

    public void onClick(DialogInterface dialog, int which) { 
     // TODO Auto-generated method stub 
     emp.setName(txtName.getText().toString()); 
     emp.setAge(Integer.valueOf(txtAge.getText().toString())); 


     emp.setDept((int)spin.getItemIdAtPosition(spin.getSelectedItemPosition())); 



     try 
     { 
     DatabaseHelper db=new DatabaseHelper(con); 
     db.UpdateEmp(emp); 

     } 
     catch(Exception ex) 
     { 
      CatchError(con, ex.toString()); 
     } 
     } 
     }); 

     b.setNeutralButton("Delete", new OnClickListener() { 

    public void onClick(DialogInterface dialog, int which) { 
     // TODO Auto-generated method stub 
     DatabaseHelper db=new DatabaseHelper(con); 
     db.DeleteEmp(emp); 
     } 
    }); 
    b.setNegativeButton("Cancel", null); 

     return b.create(); 
     //diag.show(); 

      } 

     static public void CatchError(Context con, String Exception) 
     { 
    Dialog diag=new Dialog(con); 
    diag.setTitle("Error"); 
    TextView txt=new TextView(con); 
    txt.setText(Exception); 
    diag.setContentView(txt); 
    diag.show(); 
      } 
      } 


     package mina.android.DatabaseDemo 

     import android.app.TabActivity; 
     import android.content.Intent; 
     import android.os.Bundle; 
     import android.view.Menu; 
     import android.view.MenuItem; 
     import android.widget.GridView; 
     import android.widget.TabHost; 
     import android.widget.TextView; 

     public class DatabaseDemo extends TabActivity { 
    DatabaseHelper dbHelper; 
    GridView grid; 
    TextView txtTest; 
     /** Called when the activity is first created. */ 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     SetupTabs(); 

     } 





     @Override 
     public boolean onCreateOptionsMenu(Menu menu) 
     { 
     menu.add(1, 1, 1, "Add Employee"); 
     return true; 
     } 







     public boolean onOptionsItemSelected(MenuItem item) 
     { 
     switch (item.getItemId()) 
     { 
     //Add employee 
     case 1: 
     Intent addIntent=new Intent(this,AddEmployee.class); 
     startActivity(addIntent); 
     break; 
     } 
     super.onOptionsItemSelected(item); 
     return false; 
     } 

     void SetupTabs() 
     { 

     TabHost host=getTabHost(); 

     TabHost.TabSpec spec=host.newTabSpec("tag1"); 
     Intent in1=new Intent(this, AddEmployee.class); 
     spec.setIndicator("Add Employee"); 
     spec.setContent(in1); 

     TabHost.TabSpec spec2=host.newTabSpec("tag2"); 
     Intent in2=new Intent(this, GridList.class); 

     spec2.setIndicator("Employees"); 
     spec2.setContent(in2); 
     host.addTab(spec); 
     host.addTab(spec2); 
     } 
     } 

     package mina.android.DatabaseDemo; 

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

     public class DatabaseHelper extends SQLiteOpenHelper { 

    static final String dbName="demoDB"; 
    static final String employeeTable="Employees"; 
    static final String colID="EmployeeID"; 
    static final String colName="EmployeeName"; 
    static final String colAge="Age"; 
    static final String colDept="Dept"; 

    static final String deptTable="Dept"; 
    static final String colDeptID="DeptID"; 
    static final String colDeptName="DeptName"; 

    static final String viewEmps="ViewEmps"; 


    public DatabaseHelper(Context context) { 
    super(context, dbName, null,33); 

    // TODO Auto-generated constructor stub 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
    // TODO Auto-generated method stub 

    db.execSQL("CREATE TABLE "+deptTable+" ("+colDeptID+ " INTEGER PRIMARY KEY 
      , "+ 
      colDeptName+ " TEXT)"); 

    db.execSQL("CREATE TABLE "+employeeTable+" ("+colID+" INTEGER PRIMARY KEY 
      AUTOINCREMENT, "+ 
      colName+" TEXT, "+colAge+" Integer, "+colDept+" INTEGER 

     NOT NULL ,FOREIGN KEY ("+colDept+") REFERENCES "+deptTable+" 
     ("+colDeptID+"));"); 


    db.execSQL("CREATE TRIGGER fk_empdept_deptid " + 
      " BEFORE INSERT "+ 
      " ON "+employeeTable+ 

      " FOR EACH ROW BEGIN"+ 
      " SELECT CASE WHEN ((SELECT "+colDeptID+" FROM 

      "+deptTable+" WHERE "+colDeptID+"=new."+colDept+") IS NULL)"+ 
      " THEN RAISE (ABORT,'Foreign Key Violation') END;"+ 
      " END;"); 

    db.execSQL("CREATE VIEW "+viewEmps+ 
      " AS SELECT "+employeeTable+"."+colID+" AS _id,"+ 
      " "+employeeTable+"."+colName+","+ 
      " "+employeeTable+"."+colAge+","+ 
      " "+deptTable+"."+colDeptName+""+ 
      " FROM "+employeeTable+" JOIN "+deptTable+ 
      " ON "+employeeTable+"."+colDept+" 

     ="+deptTable+"."+colDeptID 
      ); 
    //Inserts pre-defined departments 
    InsertDepts(db); 

    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    // TODO Auto-generated method stub 

    db.execSQL("DROP TABLE IF EXISTS "+employeeTable); 
    db.execSQL("DROP TABLE IF EXISTS "+deptTable); 

    db.execSQL("DROP TRIGGER IF EXISTS dept_id_trigger"); 
    db.execSQL("DROP TRIGGER IF EXISTS dept_id_trigger22"); 
    db.execSQL("DROP TRIGGER IF EXISTS fk_empdept_deptid"); 
    db.execSQL("DROP VIEW IF EXISTS "+viewEmps); 
    onCreate(db); 
    } 

    void AddEmployee(Employee emp) 
    { 


    SQLiteDatabase db= this.getWritableDatabase(); 


    ContentValues cv=new ContentValues(); 

    cv.put(colName, emp.getName()); 
    cv.put(colAge, emp.getAge()); 
    cv.put(colDept, emp.getDept()); 
    //cv.put(colDept,2); 

    db.insert(employeeTable, colName, cv); 
    db.close(); 


    } 

    int getEmployeeCount() 
    { 
    SQLiteDatabase db=this.getWritableDatabase(); 
    Cursor cur= db.rawQuery("Select * from "+employeeTable, null); 
    int x= cur.getCount(); 
    cur.close(); 
    return x; 
    } 

    Cursor getAllEmployees() 
    { 
    SQLiteDatabase db=this.getWritableDatabase(); 



    //Cursor cur= db.rawQuery("Select "+colID+" as _id , "+colName+", 

     "+colAge+" from "+employeeTable, new String [] {}); 
    Cursor cur= db.rawQuery("SELECT * FROM "+viewEmps,null); 
    return cur; 

    } 

    Cursor getAllDepts() 
    { 
    SQLiteDatabase db=this.getReadableDatabase(); 
    Cursor cur=db.rawQuery("SELECT "+colDeptID+" as _id, "+colDeptName+" from 

     "+deptTable,new String [] {}); 

    return cur; 
    } 

     void InsertDepts(SQLiteDatabase db) 
    { 
    ContentValues cv=new ContentValues(); 
     cv.put(colDeptID, 1); 
     cv.put(colDeptName, "Sales"); 
     db.insert(deptTable, colDeptID, cv); 
     cv.put(colDeptID, 2); 
     cv.put(colDeptName, "IT"); 
     db.insert(deptTable, colDeptID, cv); 
     cv.put(colDeptID, 3); 
     cv.put(colDeptName, "HR"); 
     db.insert(deptTable, colDeptID, cv); 
     db.insert(deptTable, colDeptID, cv); 

     } 

     public String GetDept(int ID) 
    { 
    SQLiteDatabase db=this.getReadableDatabase(); 

    String[] params=new String[]{String.valueOf(ID)}; 
    Cursor c=db.rawQuery("SELECT "+colDeptName+" FROM"+ deptTable+" WHERE 

     "+colDeptID+"=?",params); 
    c.moveToFirst(); 
    int index= c.getColumnIndex(colDeptName); 
    return c.getString(index); 
    } 

    public Cursor getEmpByDept(String Dept) 
    { 
    SQLiteDatabase db=this.getReadableDatabase(); 
    String [] columns=new String[]{"_id",colName,colAge,colDeptName}; 
    Cursor c=db.query(viewEmps, columns, colDeptName+"=?", new String[] 

     {Dept}, null, null, null); 
    return c; 
    } 

    public int GetDeptID(String Dept) 
    { 
    SQLiteDatabase db=this.getReadableDatabase(); 
    Cursor c=db.query(deptTable, new String[]{colDeptID+" as 

      _id",colDeptName},colDeptName+"=?", new String[]{Dept}, null, null, null); 
    //Cursor c=db.rawQuery("SELECT "+colDeptID+" as _id FROM "+deptTable+" 

      WHERE "+colDeptName+"=?", new String []{Dept}); 
    c.moveToFirst(); 
    return c.getInt(c.getColumnIndex("_id")); 

    } 

    public int UpdateEmp(Employee emp) 
    { 
    SQLiteDatabase db=this.getWritableDatabase(); 
    ContentValues cv=new ContentValues(); 
    cv.put(colName, emp.getName()); 
    cv.put(colAge, emp.getAge()); 
    cv.put(colDept, emp.getDept()); 
    return db.update(employeeTable, cv, colID+"=?", new String 

      []{String.valueOf(emp.getID())}); 

    } 

    public void DeleteEmp(Employee emp) 
    { 
    SQLiteDatabase db=this.getWritableDatabase(); 
    db.delete(employeeTable,colID+"=?", new String []  

      {String.valueOf(emp.getID())}); 
    db.close(); 
      } 
      } 

     package mina.android.DatabaseDemo; 

     import android.content.DialogInterface; 

     public class DialogListner implements 
     android.content.DialogInterface.OnClickListener { 


public DialogListner() 
{ 

} 

public void onClick(DialogInterface dialog, int which) { 
    // TODO Auto-generated method stub 

} 

    } 


     package mina.android.DatabaseDemo; 

    import android.content.Context; 

    public class Employee { 

int _id; 
String _name; 
int _age; 
int _dept; 

public Employee(String Name,int Age,int Dept) 
{ 

    this._name=Name; 
    this._age=Age; 
    this._dept=Dept; 
} 

public Employee(String Name,int Age) 
{ 
    this._name=Name; 
    this._age=Age; 
} 

public int getID() 
{ 
    return this._id; 
} 
public void SetID(int ID) 
{ 
    this._id=ID; 
} 

public String getName() 
{ 
    return this._name; 
} 

public int getAge() 
{ 
    return this._age; 
} 

public void setName(String Name) 
{ 
    this._name=Name; 
} 
public void setAge(int Age) 
{ 
    this._age=Age; 
} 



public void setDept(int Dept) 
{ 
    this._dept=Dept; 
} 

public String getDeptName(Context con, int Dept) 
{ 
    return new DatabaseHelper(con).GetDept(Dept); 
} 
public int getDept() 
{ 
    return this._dept; 
} 
    } 


     package mina.android.DatabaseDemo; 

     import android.app.Activity; 
    import android.app.AlertDialog; 
    import android.content.DialogInterface; 
    import android.content.DialogInterface.OnDismissListener; 
    import android.database.Cursor; 
    import android.database.sqlite.SQLiteCursor; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.widget.AdapterView; 
    import android.widget.GridView; 
    import android.widget.SimpleCursorAdapter; 
    import android.widget.Spinner; 
    import android.widget.TextView; 
    import android.widget.AdapterView.OnItemClickListener; 
    import android.widget.AdapterView.OnItemSelectedListener; 

    public class GridList extends Activity { 
DatabaseHelper dbHelper; 
static public GridView grid; 
TextView txtTest; 
Spinner spinDept1; 
/** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.gridview); 
    grid=(GridView)findViewById(R.id.grid); 
    txtTest=(TextView)findViewById(R.id.txtTest); 
    spinDept1=(Spinner)findViewById(R.id.spinDept1); 

    Utilities.ManageDeptSpinner(this.getParent(),spinDept1); 
    final DatabaseHelper db=new DatabaseHelper(this); 
    try 
    { 

http://img856.imageshack.us/img856/446/hoop.png

 spinDept1.setOnItemSelectedListener(new OnItemSelectedListener() { 

     public void onItemSelected(AdapterView<?> arg0, View arg1, 
       int arg2, long arg3) { 
      // TODO Auto-generated method stub 
      LoadGrid(); 
      //sca.notifyDataSetChanged(); 

     } 

     public void onNothingSelected(AdapterView<?> arg0) { 
      // TODO Auto-generated method stub 

     } 
    }); 

     } 
     catch(Exception ex) 
     { 
     txtTest.setText(ex.toString()); 
     } 



     try 
     { 
     grid.setOnItemClickListener(new OnItemClickListener() 
     { 

     public void onItemClick(AdapterView<?> parent, View v, int position, 
       long id) { 
      // TODO Auto-generated method stub 
      try 
      { 

      SQLiteCursor 
      cr=(SQLiteCursor)parent.getItemAtPosition(position); 
      String 
      name=cr.getString(cr.getColumnIndex(DatabaseHelper.colName)); 
      int 
       age=cr.getInt(cr.getColumnIndex(DatabaseHelper.colAge)); 
      String 
       Dept=cr.getString(cr.getColumnIndex(DatabaseHelper.colDeptName)); 
      Employee emp=new Employee(name, age,db.GetDeptID(Dept)); 
      emp.SetID((int)id); 
      AlertDialog diag= Alerts.ShowEditDialog(GridList.this,emp); 
      diag.setOnDismissListener(new OnDismissListener() { 

       public void onDismiss(DialogInterface dialog) { 
        // TODO Auto-generated method stub 
        txtTest.setText("dismissed"); 

      //((SimpleCursorAdapter)grid.getAdapter()).notifyDataSetChanged(); 
        LoadGrid(); 
       } 
      }); 
      diag.show(); 
      } 
      catch(Exception ex) 
      { 
       Alerts.CatchError(GridList.this, ex.toString()); 
      } 
     } 


     } 
     ); 
     } 
     catch(Exception ex) 
     { 

     } 

     } 

      @Override 
      public void onStart() 
     { 
     super.onStart(); 
     //LoadGrid(); 
      } 

      public void LoadGrid() 
      { 
     dbHelper=new DatabaseHelper(this); 
     try 
     { 
     //Cursor c=dbHelper.getAllEmployees(); 
     View v=spinDept1.getSelectedView(); 
     TextView txt=(TextView)v.findViewById(R.id.txtDeptName); 
     String Dept=String.valueOf(txt.getText()); 
     Cursor c=dbHelper.getEmpByDept(Dept); 
     startManagingCursor(c); 

     String [] from=new String 
      []{DatabaseHelper.colName,DatabaseHelper.colAge,DatabaseHelper.colDeptName}; 
     int [] to=new int [] {R.id.colName,R.id.colAge,R.id.colDept}; 
     SimpleCursorAdapter sca=new 
      SimpleCursorAdapter(this,R.layout.gridrow,c,from,to); 
     grid.setAdapter(sca); 



     } 
     catch(Exception ex) 
     { 
     AlertDialog.Builder b=new AlertDialog.Builder(this); 
     b.setMessage(ex.toString()); 
     b.show(); 
     } 
      } 

      } 

     package mina.android.DatabaseDemo; 


     import android.content.Context; 
     import android.database.Cursor; 
     import android.widget.SimpleCursorAdapter; 
     import android.widget.Spinner; 

     public class Utilities { 
     static public void ManageDeptSpinner(Context context,Spinner view) 
     { 
    DatabaseHelper dbHelper=new DatabaseHelper(context); 
    Cursor c=dbHelper.getAllDepts(); 
    //context.startManagingCursor(c); 



    //SimpleCursorAdapter ca=new 
     SimpleCursorAdapter(this,android.R.layout.simple_spinner_item, c, new String [] 
     {DatabaseHelper.colDeptName}, new int []{android.R.id.text1}); 
    SimpleCursorAdapter ca=new 
    SimpleCursorAdapter(context,R.layout.deptspinnerrow,c, 
     new String [] {DatabaseHelper.colDeptName,"_id"}, new int []{R.id.txtDeptName}); 
    view.setAdapter(ca); 

     } 
     } 
+1

**“让我知道我是否可以使用这个数据库演示作为我自己的。”**这是一个问题,我怀疑这里有人可以回答,因为它涉及许可演示。您需要返回到您下载的网站并检查是否有任何许可限制(或检查zip文件中的“licence.txt”或类似文件)。如果没有,请联系作者以申请许可。 – Squonk

+0

谢谢你的抬头。我希望我能再次找到该网站 – Kenn

回答

0

大部分Android演示,包括Notepad当前版本,使用Apache License v2.0。该许可证规定您可以自由使用和重新分配代码,但您必须保留所有现有的声明和归属,并明确承认您已修改代码。 (请参阅段落4的准确措辞。)

+0

谢谢你的回答 – Kenn

相关问题