zoukankan      html  css  js  c++  java
  • 数据库连接android

    activity

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.example.lenovo.myapplication.SQLActivity"
        android:orientation="vertical">
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:onClick="bt_1"
            android:text="初始化数据库"/>
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:onClick="bt_2"
            android:text="升级数据库"/>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <EditText
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:id="@+id/et_id"
                android:hint="id"/>
            <EditText
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:id="@+id/et_name"
                android:hint="名称"/>
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <EditText
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:id="@+id/et_sex"
                android:hint="性别"/>
            <EditText
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:id="@+id/et_age"
                android:hint="年龄"/>
        </LinearLayout>
        <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="bt_3"
        android:text="新增数据"/>
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:onClick="bt_4"
            android:text="查询数据"/>
    
    </LinearLayout>
    View Code

    java

    package com.example.lenovo.myapplication;
    
    import android.content.ContentValues;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.EditText;
    import android.widget.Toast;
    
    public class SQLActivity extends AppCompatActivity {
    
        EditText et_id,et_name,et_sex,et_age;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_sql);
            et_id=(EditText)findViewById(R.id.et_id);
            et_name=(EditText)findViewById(R.id.et_name);
            et_sex=(EditText)findViewById(R.id.et_sex);
            et_age=(EditText)findViewById(R.id.et_age);
        }
    
        //初始化数据库
        public void bt_1(View v)
        {
            //使用工具类得到数据库连接对象
            MyDBHelper myDBHelper=new MyDBHelper("test.db",1);
            //得到连接
            SQLiteDatabase sd= myDBHelper.getWritableDatabase();
            Toast.makeText(SQLActivity.this, "数据库连接成功", Toast.LENGTH_SHORT).show();
            //关闭连接
            sd.close();
    
        }
        //升级数据库
        public void bt_2(View v)
        {
            //使用工具类得到数据库连接对象
            MyDBHelper myDBHelper=new MyDBHelper("test.db",2);
            //得到连接
            SQLiteDatabase sd= myDBHelper.getWritableDatabase();
            Toast.makeText(SQLActivity.this, "数据库连接成功", Toast.LENGTH_SHORT).show();
            //关闭连接
            sd.close();
    
        }
    
        //插入新数据
        public void bt_3(View v)
        {
            //1-连接数据库,得到数据库连接对象
                  //得到连接
            SQLiteDatabase sd= new MyDBHelper("test.db",2).getWritableDatabase();
            //2-准备数据
            ContentValues cv=new ContentValues();
            cv.put("name",et_name.getText().toString());
            cv.put("sex",et_sex.getText().toString());
            cv.put("age", et_age.getText().toString());
            //3-调用insret();插入数据
            long l=sd.insert("t_user", null, cv);
            Toast.makeText(SQLActivity.this, "插入数据的主键="+l, Toast.LENGTH_SHORT).show();
            //4-关闭连接。
            sd.close();
    
        }
        //数据查询
        public void bt_4(View v)
        {
            //1-连接数据库,得到数据库连接对象
            //得到连接
            SQLiteDatabase sd= new MyDBHelper("test.db",2).getWritableDatabase();
            //2-全表全字段查询
            Cursor c= sd.query("t_user", null, null, null, null, null, null);
            //3-遍历结果集.游标.
            while (c.moveToNext())
            {
                //如果移动成功,读取数据
                String str="id="+c.getLong(c.getColumnIndex("_id"))+"姓名="+c.getString(1)+"性别="+c.getString(2)+"年龄="+c.getString(3);
                Log.e("TAG",str);
            }
            c.close();
            //4-关闭连接。
            sd.close();
        }
    
    
    
    
        //实现SQLiteOpenHelper内部类
        class MyDBHelper extends SQLiteOpenHelper
        {
            public MyDBHelper(String dbname,int ver)
            {
                //显示调用父类的构造方法
                //必须在第一行
                super(SQLActivity.this,dbname,null,ver);
            }
            //创建初始化数据库
            @Override
            public void onCreate(SQLiteDatabase db) {
                //1-执行创建数据库的语句
                String sql="CREATE TABLE t_user ( " +
                        "_id  INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," +
                        "name  VARCHAR(20) NOT NULL," +
                        "sex  CHAR9(1),age  INTEGER)";
                db.execSQL(sql);//建表
                Log.e("TAG","表创建成功");
                //2-执行初始化数据的语句,增加语句insert
                ContentValues contentValues=new ContentValues();
                contentValues.put("name","张三");
                contentValues.put("sex","男");
                contentValues.put("age","20");
                //3-执行插入,返回一个主键
                long l=db.insert("t_user",null,contentValues);
                Log.e("TAG","初始化数据="+l);
    
            }
    
            //升级数据库
            //触发条件:当版本号增大
            @Override
            public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    
                //修改数据
                if (newVersion==2)
                {
                    ContentValues contentValues = new ContentValues();
                    contentValues.put("name","李四");
                    String sql=" update t_user set name = '李四' where _id =1";
                    String [] strings ={"1","18"}; //与?一一对应,用数组传进去
                    //调用db的更新方法
                    int i =db.update("t_user", contentValues, "_id=? and age>?", strings);
                    Log.e("TAG","升级数据 数据条数="+i);
                }
            }
        }
    }
    View Code

    java

    package com.example.lenovo.myapplication;
    
    import android.content.ContentValues;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.EditText;
    import android.widget.Toast;
    
    public class SQLActivity extends AppCompatActivity {
    
        EditText et_id,et_name,et_sex,et_age;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_sql);
            et_id=(EditText)findViewById(R.id.et_id);
            et_name=(EditText)findViewById(R.id.et_name);
            et_sex=(EditText)findViewById(R.id.et_sex);
            et_age=(EditText)findViewById(R.id.et_age);
        }
    
        //初始化数据库
        public void bt_1(View v)
        {
            //使用工具类得到数据库连接对象
            MyDBHelper myDBHelper=new MyDBHelper("test.db",1);
            //得到连接
            SQLiteDatabase sd= myDBHelper.getWritableDatabase();
            Toast.makeText(SQLActivity.this, "数据库连接成功", Toast.LENGTH_SHORT).show();
            //关闭连接
            sd.close();
    
        }
        //升级数据库
        public void bt_2(View v)
        {
            //使用工具类得到数据库连接对象
            MyDBHelper myDBHelper=new MyDBHelper("test.db",2);
            //得到连接
            SQLiteDatabase sd= myDBHelper.getWritableDatabase();
            Toast.makeText(SQLActivity.this, "数据库连接成功", Toast.LENGTH_SHORT).show();
            //关闭连接
            sd.close();
    
        }
    
        //插入新数据
        public void bt_3(View v)
        {
            //1-连接数据库,得到数据库连接对象
                  //得到连接
            SQLiteDatabase sd= new MyDBHelper("test.db",2).getWritableDatabase();
            //2-准备数据
            ContentValues cv=new ContentValues();
            cv.put("name",et_name.getText().toString());
            cv.put("sex",et_sex.getText().toString());
            cv.put("age", et_age.getText().toString());
            //3-调用insret();插入数据
            long l=sd.insert("t_user", null, cv);
            Toast.makeText(SQLActivity.this, "插入数据的主键="+l, Toast.LENGTH_SHORT).show();
            //4-关闭连接。
            sd.close();
    
        }
        //数据查询
        public void bt_4(View v)
        {
            //1-连接数据库,得到数据库连接对象
            //得到连接
            SQLiteDatabase sd= new MyDBHelper("test.db",2).getWritableDatabase();
            //2-全表全字段查询
            Cursor c= sd.query("t_user", null, null, null, null, null, null);
            //3-遍历结果集.游标.
            while (c.moveToNext())
            {
                //如果移动成功,读取数据
                String str="id="+c.getLong(c.getColumnIndex("_id"))+"姓名="+c.getString(1)+"性别="+c.getString(2)+"年龄="+c.getString(3);
                Log.e("TAG",str);
            }
            //c.getCount();//查询到的数据条数
            Toast.makeText(SQLActivity.this, "结果集的记录条数="+c.getCount(), Toast.LENGTH_SHORT).show();
            c.close();
            //4-关闭连接。
            sd.close();
        }
        //带条件数据查询
        public void bt_5(View v)
        {
            //1-连接数据库,得到数据库连接对象
            //得到连接
            SQLiteDatabase sd= new MyDBHelper("test.db",2).getWritableDatabase();
            String strw="1=1";
                //得到条件
                //select * from t_user where 1=1 and _id=1 and name like= '%张%'
            if (et_id.getText().length()>0)
            {
                strw+=" and _id="+et_id.getText().toString();
            }
            if (et_name.getText().length()>0)
            {
                strw+="and name like '%"+et_name.getText().toString()+"%'";
            }
            if (et_sex.getText().length()>0)
            {
                strw+="and sex '"+et_sex.getText().toString()+"'";
            }
            if (et_age.getText().length()>0)
            {
                strw+="and age "+et_sex.getText().toString()+"";
            }
            //2-全表全字段查询
            Cursor c= sd.query("t_user", null, strw, null, null, null, null);
            //3-遍历结果集.游标.
            while (c.moveToNext())
            {
                //如果移动成功,读取数据
                String str="id="+c.getLong(c.getColumnIndex("_id"))+"姓名="+c.getString(1)+"性别="+c.getString(2)+"年龄="+c.getString(3);
                Log.e("TAG",str);
            }
            //c.getCount();//查询到的数据条数
            Toast.makeText(SQLActivity.this, "结果集的记录条数="+c.getCount(), Toast.LENGTH_SHORT).show();
            c.close();
            //4-关闭连接。
            sd.close();
        }
    
        //修改数据
        public void bt_6(View v)
        {
            //1-连接数据库,得到数据库连接对象
            //得到连接
            SQLiteDatabase sd= new MyDBHelper("test.db",2).getWritableDatabase();
            //2-修改
            ContentValues cv=new ContentValues();
            cv.put("name",et_name.getText().toString());
            cv.put("sex",et_sex.getText().toString());
            cv.put("age", et_age.getText().toString());
    
            int i=sd.update("t_user", cv, "_id=?", new String[]{et_id.getText().toString()});
    
            Toast.makeText(SQLActivity.this, "结果集的记录条数="+i, Toast.LENGTH_SHORT).show();
            //4-关闭
            sd.close();
        }
    
        //删除数据
        public void bt_7(View v)
        {
            //1-连接数据库,得到数据库连接对象
            //得到连接
            SQLiteDatabase sd = new MyDBHelper("test.db", 2).getWritableDatabase();
    
            //2-删除
            int i= sd.delete("t_user", "_id=?", new String[]{et_id.getText().toString()});
            Toast.makeText(SQLActivity.this, "删除数据条数="+i, Toast.LENGTH_SHORT).show();
            //关闭
            sd.close();
        }
        //数据库事务
        public void bt_8(View v)
        {
            //1-连接数据库,得到数据库连接对象
            // 得到连接
            SQLiteDatabase sd = new MyDBHelper("test.db", 2).getWritableDatabase();
    
            try {
               //启动事务
                sd.beginTransaction();
                //2-修改
                // 修改1
                ContentValues cv = new ContentValues();
                cv.put("age", "42");
                int i = sd.update("t_user", cv, "_id=1", null);
    
                //修改2
                //抛出异常
                //确保一致性
    //            if (i > 0) {
    //                throw new RuntimeException("模拟事务异常");
    //            }
                ContentValues cv2 = new ContentValues();
                cv.put("age", "52");
                int k = sd.update("t_user", cv2, "_id=2", null);
                //设置事务是成功完成的
                sd.setTransactionSuccessful();
                Toast.makeText(SQLActivity.this, "结果集的记录条数=" + (i + k), Toast.LENGTH_SHORT).show();
    
            }
            catch (Exception e)
            {
                e.printStackTrace();
                Toast.makeText(SQLActivity.this, "修改出错", Toast.LENGTH_SHORT).show();
            }
            finally {
                //一定会执行的代码
    
                //结束事务
                //1-没有异常,提交事务
                //2-发生异常,回滚事务
                sd.endTransaction();
                //4-关闭
                sd.close();
            }
        }
    
    
    
        //实现SQLiteOpenHelper内部类
        class MyDBHelper extends SQLiteOpenHelper
        {
            public MyDBHelper(String dbname,int ver)
            {
                //显示调用父类的构造方法
                //必须在第一行
                super(SQLActivity.this,dbname,null,ver);
            }
            //创建初始化数据库
            @Override
            public void onCreate(SQLiteDatabase db) {
                //1-执行创建数据库的语句
                String sql="CREATE TABLE t_user ( " +
                        "_id  INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," +
                        "name  VARCHAR(20) NOT NULL," +
                        "sex  CHAR9(1),age  INTEGER)";
                db.execSQL(sql);//建表
                Log.e("TAG","表创建成功");
                //2-执行初始化数据的语句,增加语句insert
                ContentValues contentValues=new ContentValues();
                contentValues.put("name","张三");
                contentValues.put("sex","男");
                contentValues.put("age","20");
                //3-执行插入,返回一个主键
                long l=db.insert("t_user",null,contentValues);
                Log.e("TAG","初始化数据="+l);
    
            }
    
            //升级数据库
            //触发条件:当版本号增大
            @Override
            public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    
                //修改数据
                if (newVersion==2)
                {
                    ContentValues contentValues = new ContentValues();
                    contentValues.put("name","李四");
                    String sql=" update t_user set name = '李四' where _id =1";
                    String [] strings ={"1","18"}; //与?一一对应,用数组传进去
                    //调用db的更新方法
                    int i =db.update("t_user", contentValues, "_id=? and age>?", strings);
                    Log.e("TAG","升级数据 数据条数="+i);
                }
            }
        }
    }
    View Code
  • 相关阅读:
    page load时执行JavaScript
    解决Postgres无法连接的问题
    Linux环境设置IP及关闭防火墙
    解决VisualStudio无法调试的问题
    【PostgresSQL】同时更新两个表
    更改系统键盘
    【SQLSERVER】How to check current pool size
    BZOJ 1070: [SCOI2007]修车
    BZOJ 1069: [SCOI2007]最大土地面积
    BZOJ 1068: [SCOI2007]压缩
  • 原文地址:https://www.cnblogs.com/1ming/p/5558081.html
Copyright © 2011-2022 走看看