-1

こんにちは人々私は今6ヶ月間私のアプリを作っています。ivはずっと私のレイアウトやコーディングなどに取り組んでいます。先月、ivはデータベースを作成しようとしていました。しかし、私はこの問題に頭を悩ませることはできません。Androidのメモ帳のチュートリアルを終了し、SQLiteデータベースブラウザをダウンロードしました。また、メモ帳v3(データの追加と削除)からデータベースが機能している場合でも、プロジェクトでこのデータベースのデモを使用できるかどうかはわかりません。

また、私はいくつかのスタックオーバーフローページにいて(今それを見つけることができません)、誰かが私がダウンロードしたデータベースデモzipファイルへのリンクを置きました。それはまさに後のことです。皆さんが私を助けてくれて、このデータベースのデモを自分のものとして使用できるかどうか教えてくれることを願っています。

誤解しないでください。自分のデータベースを作成したり、それについて学んだりするための簡単な方法を探しているわけではありません。

Androidの世界では学ぶべきことがたくさんあります。他のプロジェクトで使用できる作業中のDBがある場合は、コーディングについて学習します。これがデータベースデモの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);

        }
        }
4

1 に答える 1

0

現在のバージョンのNotepadを含むほとんどの Android デモでは、 Apache License v2.0を使用しています。このライセンスは、コードを自由に使用および再配布できることを示していますが、既存の通知と帰属をすべて保持し、コードを変更したことを明確に認めなければなりません。(正確な文言については、段落 4 を参照してください。)

于 2012-06-18T18:11:55.193 に答える