精华内容
下载资源
问答
  • SQLite数据库储存图片信息,GridView显示,基本实现添加、删除图标操作 详情请访问http://www.apkbus.com/blog-102488-40414.html进行预览程序的效果
  • Android在数据库储存图标资源的方法 问题: 项目中需要存储图标资源,若数据库中直接存储图标资源id(R.mipmap.icon)显然是有风险的做法。因为每次编译应用程序时会自动生成R文件,所以每次启动时,图片资源id都...

    Android在数据库储存图标资源的方法

    问题
    项目中需要存储图标资源,若数据库中直接存储图标资源id(R.mipmap.icon)显然是有风险的做法。因为每次编译应用程序时会自动生成R文件,所以每次启动时,图片资源id都可能会发生变化。即 图片资源id(int)并不是恒不变的,不能通过数据库静态储存id来获取图片

    解决方法

    //数据库储存 String 类型{图标资源名称}
    var iconName:String = resources.getResourceEntryName(R.mipmap.anniversary)
    
    //获取出来图标资源名称 转为 {图标资源id}
    var iconId:Int = context.resources.getIdentifier(sortNote.iconName,"mipmap",context.packageName)
    
    展开全文
  • 一个小知识 1分钱送了.. 整理不要的东西..
  • SQLite数据库储存图片信息,GridView显示,基本实现添加、删除图标操作 效果图如下: 废话不多说,直接上代码: MainActivity.java [代码]java代码: ? 1 2 3 4 5 6 7 8 ...

    SQLite数据库储存图片信息,GridView显示,基本实现添加、删除图标操作

    效果图如下:

    废话不多说,直接上代码:

    MainActivity.java

    [代码]java代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    package com.database.sqlite;
    import java.util.List;
    import android.app.Activity;
    import android.app.ActivityManager;
    import android.content.Context;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.Window;
    import android.widget.AdapterView;
    import android.widget.GridView;
    import android.widget.TextView;
    import android.widget.Toast;
    import android.widget.AdapterView.OnItemClickListener;
    /**
    * 主菜单类
    *
    *
    *
    * @author 小赵
    *
    */
    public class MainActivity extends Activity {
        private GridView gridView;
        private PictureAdapter adapter;
        private DBContror dbcon;
        private List<Picture> mylist;
        private Intent intent;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //标题栏自定义设置
            requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
            setContentView(R.layout.main);
            getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title);
            TextView tv = (TextView) findViewById(R.id.textTile);
            tv.setText(R.string.main_menu);
           
            dbcon = new DBContror(this);// 初始化数据库
            mylist = dbcon.queryAllItem();// 查询数据库中的全部数据,并存放到List<Picture>中
           
            intent = new Intent();
           
            gridView = (GridView) findViewById(R.id.gridview);
            adapter = new PictureAdapter(mylist, this);// 自定义适配器
            gridView.setAdapter(adapter);
            gridView.setOnItemClickListener(new OnItemClickListener() {
                public void onItemClick(AdapterView<?> parent, View v,
                        int position, long id) {
                    OnClickGridViewItem(position);// 点击事件
                }
            });
        }
        /**
         * GridView中图标点击事件
         *
         * @param position
         */
        protected void OnClickGridViewItem(int position) {
            String result = mylist.get(position).getTitle();
            if (result.endsWith("商城")) {
                // 进入AppStore
                intent.setClass(MainActivity.this, AppStoreActivity.class);
                MainActivity.this.startActivity(intent);
            } else {
                Toast.makeText(MainActivity.this, mylist.get(position).getTitle(),
                        Toast.LENGTH_SHORT).show();
            }
        }
        @Override
        protected void onResume() {
            super.onResume();
            mylist = dbcon.queryAllItem();
            adapter = new PictureAdapter(mylist, this);
            adapter.notifyDataSetChanged();
            gridView.setAdapter(adapter);
        }
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.main, menu);//功能菜单键
            return true;
        }
        /**
         * 功能菜单选项
         */
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
            case R.id.About:
                Toast.makeText(MainActivity.this, "关于", Toast.LENGTH_SHORT).show();
                break;
            case R.id.Exit:
                // Toast.makeText(MainActivity.this, "退出", Toast.LENGTH_SHORT).show();
                ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
                am.restartPackage(getPackageName());
                intent.setClass(this, MainActivity.class);
                Intent i = new Intent(Intent.ACTION_MAIN);
                i.addCategory(Intent.CATEGORY_HOME);
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent);
                startActivity(i);
                break;
            default:
                break;
            }
            return false;
        }
        /**
         * 管理应用(删除操作)
        
         * @param view
         */
        public void OnManage(View view) {
            intent.setClass(MainActivity.this, ManageActivity.class);
            this.startActivity(intent);
        }
        /**
         * 禁用返回键
         */
        public void onBackPressed() {
        }
    }


    主菜单布局XML

    main.xml

    [代码]xml代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_gravity="left"
        android:background="@drawable/top_image"
        android:orientation="vertical"
        android:weightSum="2" >
        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/top_image"
            android:orientation="horizontal" >
            <!-- 帮助按钮 -->
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom|center"
                android:layout_weight="1"
                android:background="@drawable/btn_home_bg"
                android:gravity="center"
                android:text="@string/help"
                android:textColor="#000000"
                android:textSize="15dip" />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="2" />
            <!-- 返回主页按钮 -->
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom|center"
                android:layout_weight="1"
                android:background="@drawable/btn_home_bg"
                android:gravity="center"
                android:onClick="OnManage"
                android:text="@string/manage"
                android:textColor="#000000"
                android:textSize="15dip" />
        </LinearLayout>
        <GridView
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/gridview"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:columnWidth="80dip"
            android:gravity="center"
            android:horizontalSpacing="5dip"
            android:numColumns="auto_fit"
            android:stretchMode="columnWidth"
            android:verticalSpacing="5dip" />
    </LinearLayout>


    标题布局:

    title.xml

    [代码]xml代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?xml version="1.0" encoding="utf-8"?>
    <!-- 标题栏文字设置 -->
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center" >
        <TextView
            android:id="@+id/textTile"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#FFFFFF"
            android:textStyle="bold"
            android:textSize="18dip" />
    </LinearLayout>


    菜单选项布局:

    main.xml

    [代码]xml代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        <item
            android:id="@+id/About"
            android:orderInCategory="100"
            android:title="@string/menu_about"/>
       
        <item
            android:id="@+id/Exit"
            android:orderInCategory="100"
            android:title="@string/menu_cancel"/>
    </menu>


    创建数据类:

    DBHelper.java

    [代码]java代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    package com.database.sqlite;
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    /**
    * 创建数据库
    *
    * @author 小赵
    *
    */
    public class DBHelper extends SQLiteOpenHelper {
        public DBHelper(Context context) {
            super(context, Gloable.DB_NAME, null, Gloable.DB_VERSION);
        }
        /**
         * 创建数据库
         */
        @Override
        public void onCreate(SQLiteDatabase db) {
            String sql = "CREATE TABLE IF NOT EXISTS "
                    + Gloable.TABLE_NAME
                    + "(id INTEGER PRIMARY KEY  NOT NULL,pictureId INTEGER  NOT NULL,pictureName varchar not null)";
            db.execSQL(sql);
        }
        @Override
        public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
        }
    }

    数据库操作类:

    DBContror.java


    [代码]java代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    package com.database.sqlite;
    import java.util.ArrayList;
    import java.util.List;
    import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    /**
    * 数据库操作类
    *
    * @author 小赵
    *
    */
    public class DBContror {
        private DBHelper picdb;
        private List<Picture> all = new ArrayList<Picture>();
        public DBContror(Context context) {
            picdb = new DBHelper(context);
            all = queryAllItem(); // 查询全部数据
            // 如果不存在数据就初始化数据库并添加数据
            if (all.size() > 0) {
            } else {
                initDB(getData());
            }
        }
        /**
         * 数据库初始化
         *
         * @param value
         * @return
         */
        private long initDB(List<Picture> value) {
            long row = 0;
            SQLiteDatabase db = picdb.getWritableDatabase();
            picdb.onCreate(db);
            ContentValues values = null;
            Picture map = null;
            try {
                while (value.size() > 0) {
                    map = value.remove(0);
                    values = new ContentValues();
                    values.put("pictureId", map.getImageId());
                    values.put("pictureName", map.getTitle());
                    row = db.insert(Gloable.TABLE_NAME, null, values);
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (db.isOpen()) {
                    db.close();
                }
            }
            return row;
        }
        /**
         * 添加数据
         *
         * @param picBean
         * @return
         */
        public long insertItem(Picture picBean) {
            long row = 0;
            try {
                SQLiteDatabase db = picdb.getWritableDatabase();
                picdb.onCreate(db);
                ContentValues contentValues = new ContentValues();
                contentValues.put("pictureId", picBean.getImageId());
                contentValues.put("pictureName", picBean.getTitle());
                row = db.insert(Gloable.TABLE_NAME, null, contentValues);
                db.close();
            } catch (Exception e) {
            }
            return row;
        }
        /**
         * 按名称删除指定名称(name)的数据
         *
         * @param name
         * @return
         */
        public int deleteById(String name) {
            int i = 0;
            try {
                String[] sb = new String[1];
                sb[0] = name;
                SQLiteDatabase db = picdb.getWritableDatabase();
                picdb.onCreate(db);
                i = db.delete(Gloable.TABLE_NAME, "pictureName=?", sb);
            } catch (Exception e) {
            }
            return i;
        }
        /**
         * 查询数据库中是否存在名称为name的数据
         *
         * @param name
         * @return
         */
        public boolean checkByName(String name) {
            Cursor cursor;
            try {
                SQLiteDatabase db = picdb.getWritableDatabase();
                picdb.onCreate(db);
                cursor = db.query(Gloable.TABLE_NAME, null, "pictureName=?",
                        new String[] { name }, null, null, null);
                cursor.moveToFirst();
                int count = cursor.getCount();
                db.close();
                if (count > 0) {
                    cursor.close();
                    return true;
                }
                cursor.close();
            } catch (Exception e) {
            }
            return false;
        }
        /**
         * 查询数据库所有的数据
         *
         * @return
         */
        public List<Picture> queryAllItem() {
            SQLiteDatabase db = picdb.getReadableDatabase();
            picdb.onCreate(db);
            List<Picture> pictures = new ArrayList<Picture>();
            try {
                Cursor cursor = db.query(Gloable.TABLE_NAME, null, null, null,
                        null, null, null);
                while (cursor.moveToNext()) {
                    Picture picture = new Picture();
                    picture.setImageId(cursor.getInt(cursor
                            .getColumnIndex("pictureId")));
                    picture.setTitle(cursor.getString(cursor
                            .getColumnIndex("pictureName")));
                    pictures.add(picture);
                }
                cursor.close();
                db.close();
            } catch (Exception e) { }
            return pictures;
        }
        /**
         * 查看picture数据库是否已经存在该图片
         */
        public boolean checkPic(Picture picture) {
            try {
                SQLiteDatabase db = picdb.getWritableDatabase();
                picdb.onCreate(db);
                String clientCode = picture.getTitle();
                Cursor cursor = db.query(Gloable.TABLE_NAME, null, "pictureName=?",
                        new String[] { clientCode }, null, null, null);
                cursor.moveToFirst();
                int count = cursor.getCount();
                db.close();
                if (count > 0) {
                    cursor.close();
                    return true;
                }
                cursor.close();
            } catch (Exception e) { }
            return false;
        }
        /**
         * 初始化添加系统数据
         *
         * @return
         */
        private List<Picture> getData() {
            List<Picture> list = new ArrayList<Picture>();
            for (int i = 0; i < Gloable.IMAGES.length; i++) {
                Picture picture = new Picture();
                picture.setImageId(Gloable.IMAGES[i]);
                picture.setTitle(Gloable.TITLES[i]);
                list.add(picture);
            }
            return list;
        }
    }

    适配器类PictureAdapter.java


    [代码]java代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    package com.database.sqlite;
    import java.util.List;
    import android.content.Context;
    import android.graphics.Color;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.ImageView;
    import android.widget.TextView;
    /**
    * 适配器类PictureAdapter
    *
    * @author 小赵
    *
    */
    public class PictureAdapter extends BaseAdapter {
        List<Picture> pictures;
        Context context;
        public PictureAdapter(List<Picture> pic_list, Context context) {
            super();
            this.pictures = pic_list;
            this.context = context;
        }
        @Override
        public int getCount() {
            if (null != pictures) {
                return pictures.size();
            } else {
                return 0;
            }
        }
        @Override
        public Object getItem(int position) {
            return pictures.get(position);
        }
        @Override
        public long getItemId(int position) {
            return position;
        }
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            LayoutInflater inflater = LayoutInflater.from(context);
            ViewHolder viewHolder;
            if (convertView == null) {
                convertView = inflater.inflate(R.layout.picture_item, null);
                viewHolder = new ViewHolder();
                viewHolder.title = (TextView) convertView.findViewById(R.id.title);
                viewHolder.image = (ImageView) convertView.findViewById(R.id.image);
                convertView.setTag(viewHolder);
            } else {
                viewHolder = (ViewHolder) convertView.getTag();
            }
            viewHolder.title.setText((CharSequence) pictures.get(position)
                    .getTitle());
            viewHolder.title.setTextColor(Color.BLACK);
            viewHolder.image.setImageResource(pictures.get(position).getImageId());
            return convertView;
        }
    }
    class ViewHolder {
        public TextView title;
        public ImageView image;
    }


    图片Bean类:

    Picture.java

    [代码]java代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    package com.database.sqlite;
    public class Picture {
        private String title; //图片名称
        private int imageId; //图片ID(位置)
        public Picture() {
            super();
        }
        public Picture(String title, int imageId) {
            super();
            this.title = title;
            this.imageId = imageId;
        }
        public String getTitle() {
            return title;
        }
        public void setTitle(String title) {
            this.title = title;
        }
        public int getImageId() {
            return imageId;
        }
        public void setImageId(int imageId) {
            this.imageId = imageId;
        }
    }

    管理界面类:

    ManageActivity.java


    [代码]java代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    package com.database.sqlite;
    import java.util.List;
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.view.Window;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.GridView;
    import android.widget.TextView;
    import android.widget.Toast;
    /**
    * 管理界面(用于删除操作)
    *
    * @author 小赵
    *
    */
    public class ManageActivity extends Activity {
        private GridView gridView;
        private PictureAdapter adapter;
        private Intent intent;
        private DBContror dbcon;
        private List<Picture> mylist;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
            setContentView(R.layout.manage);
            getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title);
            TextView tv = (TextView) findViewById(R.id.textTile);
            tv.setText(R.string.delete);
            dbcon = new DBContror(this);
            mylist = dbcon.queryAllItem();
            intent = new Intent();
            gridView = (GridView) findViewById(R.id.gridview);
            adapter = new PictureAdapter(mylist, this);
            gridView.setAdapter(adapter);
            gridView.setOnItemClickListener(new OnItemClickListener() {
                public void onItemClick(AdapterView<?> parent, View v,
                        int position, long id) {
                    if (position < 2) {
                        Toast.makeText(ManageActivity.this, "系统应用,无法删除!正在返回请稍后……",
                                Toast.LENGTH_SHORT).show();
                    } else {
                        dbcon.deleteById(mylist.get(position).getTitle());
                        adapter.notifyDataSetChanged();
                        Toast.makeText(ManageActivity.this, "删除成功!正在返回请稍后……",
                                Toast.LENGTH_SHORT).show();
                    }
                    onBack(null);
                }
            });
        }
        public void onBack(View view) {
            intent.setClass(ManageActivity.this, MainActivity.class);
            ManageActivity.this.startActivity(intent);
        }
        public void onMain(View view) {
            intent.setClass(ManageActivity.this, MainActivity.class);
            ManageActivity.this.startActivity(intent);
        }
        /**
         * 禁用返回键
         */
        public void onBackPressed() {
        }
    }


    管理布局类:

    Manage.xml

    [代码]xml代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_gravity="left"
        android:orientation="vertical"
        android:weightSum="2" >
        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/top_image"
            android:orientation="horizontal" >
            <!-- 帮助按钮 -->
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom|center"
                android:layout_weight="1"
                android:gravity="center"
                android:text="@string/back"
                android:background="@drawable/btn_home_bg"
                android:onClick="onBack"
                android:textColor="#FF0000"
                android:textSize="15dip" />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="2" />
            <!-- 返回主页按钮 -->
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom|center"
                android:layout_weight="1"
                android:gravity="center"
                android:text="@string/main"
                android:onClick="onMain"
                android:background="@drawable/btn_home_bg"
                android:textColor="#FF0000"
                android:textSize="15dip" />
        </LinearLayout>
        <GridView
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/gridview"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:columnWidth="80dip"
            android:gravity="center"
            android:horizontalSpacing="5dip"
            android:numColumns="auto_fit"
            android:stretchMode="columnWidth"
            android:verticalSpacing="5dip" />
    </LinearLayout>

    应用商城类:

    AppStoreActivity.java


    [代码]java代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    package com.database.sqlite;
    import java.util.ArrayList;
    import java.util.List;
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.view.Window;
    import android.widget.AdapterView;
    import android.widget.GridView;
    import android.widget.TextView;
    import android.widget.Toast;
    import android.widget.AdapterView.OnItemClickListener;
    /**
    * 商城
    *
    * @author 小赵
    *
    */
    public class AppStoreActivity extends Activity {
        private GridView gridView;
        private PictureAdapter adapter;
        private Intent intent;
        private List<Picture> mylist;
        private DBContror dbcon;
        public String[] addtitles = new String[] { "博客", "历史", "计算器", "分享", "微博",
                "时钟" };
        public Integer[] addimages = new Integer[] { R.drawable.blog,
                R.drawable.history, R.drawable.calculator, R.drawable.share,
                R.drawable.weibo, R.drawable.time };
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
            setContentView(R.layout.manage);
            getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title);
            TextView tv = (TextView) findViewById(R.id.textTile);
            tv.setText(R.string.add);
            dbcon = new DBContror(this);
            intent = new Intent();
            gridView = (GridView) findViewById(R.id.gridview);
            mylist = new ArrayList<Picture>();
            for (int i = 0; i < addtitles.length; i++) {
                Picture newPic = new Picture();
                newPic.setImageId(addimages[i]);
                newPic.setTitle(addtitles[i]);
                mylist.add(newPic);
            }
            adapter = new PictureAdapter(mylist, this);
            gridView.setAdapter(adapter);
            gridView.setOnItemClickListener(new OnItemClickListener() {
                public void onItemClick(AdapterView<?> parent, View v,
                        int position, long id) {
                    if (dbcon.checkByName(mylist.get(position).getTitle())) {
                        Toast.makeText(AppStoreActivity.this,
                                "该应用已经存在无法再次添加!正在返回请稍后……", Toast.LENGTH_SHORT)
                                .show();
                    } else {
                        dbcon.insertItem(mylist.get(position));
                        adapter.notifyDataSetChanged();
                        Toast.makeText(AppStoreActivity.this, "添加成功!正在返回请稍后……",
                                Toast.LENGTH_SHORT).show();
                    }
                    intent.setClass(AppStoreActivity.this, MainActivity.class);
                    AppStoreActivity.this.startActivity(intent);
                }
            });
        }
        /**
         * 返回
         *
         * @param view
         */
        public void onBack(View view) {
            intent.setClass(AppStoreActivity.this, MainActivity.class);
            AppStoreActivity.this.startActivity(intent);
        }
        /**
         * 返回主页
         *
         * @param view
         */
        public void onMain(View view) {
            intent.setClass(AppStoreActivity.this, MainActivity.class);
            AppStoreActivity.this.startActivity(intent);
        }
        /**
         * 禁用返回键
         */
        public void onBackPressed() {
        }
    }

    商城布局和管理布局一样,可以共用一个,呵呵……

    全局变量类:

    Gloable.java


    [代码]java代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    package com.database.sqlite;
    /**
    * 全局资源类
    *
    * @author 小赵
    *
    */
    public class Gloable {
        public static String[] TITLES = new String[] { "商城", "测试1", "测试2", "测试3" };
        public static Integer[] IMAGES = new Integer[] { R.drawable.appstore,
                R.drawable.test1, R.drawable.test2, R.drawable.test3 };
        public static String DB_NAME = "pictureDB";
        public static String TABLE_NAME = "picture";
        public static int DB_VERSION = 1;
    }

    图片item类:

    picture_item.xml

    [代码]xml代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/root"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
        <ImageView
            android:id="@+id/image"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:contentDescription="@string/app_name"
            android:padding="4dp"
            android:scaleType="fitXY" />
        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center_horizontal" />
    </LinearLayout>

    String类:

    string.xml


    [代码]xml代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <resources>
        <string name="app_name">SQLiteDemo</string>
        <string name="hello_world">Hello world!</string>
        <string name="menu_settings">设置</string>
       
        <!-- 界面标题 -->
        <string name="main_menu">主菜单</string>
        <string name="shop_list">商城应用</string>
        <string name="local_list">本地应用</string>
       
        <!-- 标题上的选择按钮 -->
        <string name="help">帮助</string>
        <string name="main">主页</string>
        <string name="back">返回</string>
        <string name="manage">管理</string>
        <string name="delete">点击图标删除</string>
        <string name="add">点击图标添加应用</string>
       
        <!-- 菜单功能键下的控件 -->
        <string name="menu_about">关于</string>
        <string name="menu_cancel">退出</string>
    </resources>

    最后需要添加如下权限:


    [代码]xml代码:

    1
    <uses-permission android:name="android.permission.RESTART_PACKAGES" />

    资源图片呢,没有找到在哪里添加附件,以后再说……只是数据库操作的小Demo,希望各位大虾多多指教,相互学习!!!

    最后附上工程结构图:

    展开全文
  • 很好用的插件,居然用二进制储存图片信息,很适合小图片上传,数据库储存模式也很值得使用,转载作品,共大家借鉴。
  • 本文介绍了在MySQL数据库中直接储存图片的方法。
  • 如何在MySQL数据库中直接储存图片?这是困扰很多人的一个问题,如果你想把二进制的数据,比如说图片文件和HTML文件,直接保存在你的MySQL数据库,那么这篇文章就是为你而写的!我将告诉你怎样通过HTML表单来储存这些文件...

    如何在MySQL数据库中直接储存图片?这是困扰很多人的一个问题,如果你想把二进制的数据,比如说图片文件和HTML文件,直接保存在你的MySQL数据库,那么这篇文章就是为你而写的!我将告诉你怎样通过HTML表单来储存这些文件,怎样访问和使用这些文件。下文中将带来详细的讲解,希望对大家能够有所帮助。

      在mysql中建立一个新的database

      首先,你必须在你的mysql中建立一个新的数据库,我们将会把那些二进制文件储存在这个数据库里。在例子中我会使用下列结构,为了建立数据库,你必须做下列步骤:

      ①进入MySql控制器

      ②输入命令

    create database binary_data;
    ③输入命令

    use binary_data;
    ④输入命令

    CREATE TABLE binary_data(idINT(4) NOT NULL AUTO_INCREMENT PRIMARY KEY,description CHAR(50),bin_dataLONGBLOB,filename CHAR(50),filesize CHAR(50),filetype CHAR(50));
    如果没有意外,数据库和表应该建立好了。

      一个怎样储存文件的例子程序

      用这个例子你可以通过Html表单将文件传输到数据库中

      以下为引用的内容:

    //store.php3-byFlorianDittmer
    ?>
    //如果提交了表单,代码将被执行:
    if($submit){
    //连接到数据库
    //(你可能需要调整主机名,用户名和密码)
    MYSQL_CONNECT("localhost","root","password");
    mysql_select_db("binary_data");
    $data=addslashes(fread(fopen($form_data, "r"),filesize($form_data)));
    $result=MYSQL_QUERY("INSERTINTObinary_data(description,bin_data,filename,filesize,filetype)".
    "VALUES(’$form_description’,’$data’,’$form_data_name’,’$form_data_size’,’$form_data_type’)");
    $id=mysql_insert_id();
    print "
    ThisfilehasthefollowingDatabaseID:$id";
    MYSQL_CLOSE();
    }else{
    //否则显示储存新数据的表单
    ?>
    Filetoupload/storeindatabase:
    }
    ?>
    如果你执行了这个程序,你将会看见一个简单的Html表单,单击“浏览”选择一个文件,然后单击提交。  当文件上传至web服务器之后,程序将会告诉你刚刚上传的文件的ID(记住这个ID,待会要用)。

      一个怎样访问文件的例子程序

      你可以通过这个程序访问你刚才储存的文件

      以下为引用的内容:

    //getdata.php3-byFlorianDittmer
    //调用方法:getdata.php3?id=
    if($id){
    //你可能需要调整主机名,用户名和密码:
    @MYSQL_CONNECT("localhost","root","password");
    @mysql_select_db("binary_data");
    $query= "selectbin_data,filetypefrombinary_datawhereid=$id";
    $result=@MYSQL_QUERY($query);
    $data=@MYSQL_RESULT($result,0,"bin_data");
    $type=@MYSQL_RESULT($result,0,"filetype");
    Header( "Content-type:$type");
    echo$data;
    };
    ?>
            程序必须知道要访问哪个文件,所以你必须将ID作为一个参数。

      例如:一个文件在数据库中的ID为2。 你可以这样调用它:

    getdata.php3?id=2
        如果你将图片储存在数据库里,你可以像调用图片一样调用它。

      怎样储存大于1MB的文件:

      如果你想储存大于1MB的文件,你必须对你的程序、PHP设置、SQL设置进行许多修改。

      下面几条也许可以帮助你储存小于24MB的文件:

      ①修改store.php3,将MAX_FILE_SIZE的值改成24000000。

      ②修改你的PHP设置,在一般情况下,PHP只允许小于2MB的文件,所以你必须将max_filesize(在php.ini中)的值改成24000000。

      ③去掉MYSQL的数据包大小限制,在一般情况下MYSQL小于1MB的数据包.

      用以下参数重启你的MYSQL

    /usr/local/bin/safe_mysqld-Okey_buffer=16M-Otable_cache=128-Osort_buffer=4M-Orecord_buffer=1M-Omax_allowed_packet=24M
            到这里关于在MySQL数据库中直接储存图片的讲解就全部结束了,大家可以参照上文中涉及到的内容对照着去操作,希望大家都能够从上文中讲解的内容中有所收获。
     










    本文转自 wws5201985 51CTO博客,原文链接:http://blog.51cto.com/wws5201985/739681,如需转载请自行联系原作者
    展开全文
  • 如何在数据库mysql中储存图片

    万次阅读 2019-05-28 16:39:15
    通常对用户上传的图片需要保存到数据库中。 解决方法一般有两种: 1、将图片保存的路径存储到数据库; 2、将图片以二进制数据流的形式直接写入数据库字段中。 以下为具体方法: 一、保存图片的上传路径到数据库:  ...

    通常对用户上传的图片需要保存到数据库中。

    解决方法一般有两种:

    1、将图片保存的路径存储到数据库;

    2、将图片以二进制数据流的形式直接写入数据库字段中。

    以下为具体方法:

    一、保存图片的上传路径到数据库:
      string uppath="";//用于保存图片上传路径
      //获取上传图片的文件名
      string fileFullname = this.FileUpload1.FileName;
      //获取图片上传的时间,以时间作为图片的名字可以防止图片重名
      string dataName = DateTime.Now.ToString(“yyyyMMddhhmmss”);
      //获取图片的文件名(不含扩展名)
      string fileName = fileFullname.Substring(fileFullname.LastIndexOf("\") + 1);
      //获取图片扩展名
      string type = fileFullname.Substring(fileFullname.LastIndexOf(".") + 1);
      //判断是否为要求的格式
      if (type == “bmp” || type == “jpg” || type == “jpeg” || type == “gif” || type == “JPG” || type == “JPEG” || type == “BMP” || type == “GIF”)
      {
       //将图片上传到指定路径的文件夹
       this.FileUpload1.SaveAs(Server.MapPath("~/upload") + “\” + dataName + “.” + type);
       //将路径保存到变量,将该变量的值保存到数据库相应字段即可
       uppath = “~/upload/” + dataName + “.” + type;
      }
      二、将图片以二进制数据流直接保存到数据库:
      引用如下命名空间:
      using System.Drawing;
      using System.IO;
      using System.Data.SqlClient;
      设计数据库时,表中相应的字段类型为iamge
      保存:
      //图片路径
      string strPath = this.FileUpload1.PostedFile.FileName.ToString ();
      //读取图片
      FileStream fs = new System.IO.FileStream(strPath, FileMode.Open, FileAccess.Read);
      BinaryReader br = new BinaryReader(fs);
      byte[] photo = br.ReadBytes((int)fs.Length);
      br.Close();
      fs.Close();
      //存入
      SqlConnection myConn = new SqlConnection(“Data Source=.;Initial Catalog=stumanage;User ID=sa;Password=123”);
      string strComm = " INSERT INTO stuInfo(stuid,stuimage) VALUES(107,@photoBinary )";//操作数据库语句根据需要修改
      SqlCommand myComm = new SqlCommand(strComm, myConn);
      myComm.Parameters.Add("@photoBinary", SqlDbType.Binary, photo.Length);
      myComm.Parameters["@photoBinary"].Value = photo;
      myConn.Open();
      if (myComm.ExecuteNonQuery() > 0)
      {
       this.Label1.Text = “ok”;
      }
      myConn.Close();
      读取:
      …连接数据库字符串省略
      mycon.Open();
      SqlCommand command = new
      SqlCommand(“select stuimage from stuInfo where stuid=107”, mycon);//查询语句根据需要修改
      byte[] image = (byte[])command.ExecuteScalar ();
      //指定从数据库读取出来的图片的保存路径及名字
      string strPath = “~/Upload/zhangsan.JPG”;
      string strPhotoPath = Server.MapPath(strPath);
      //按上面的路径与名字保存图片文件
      BinaryWriter bw = new BinaryWriter(File.Open(strPhotoPath,FileMode.OpenOrCreate));
      bw.Write(image);
      bw.Close();
      //显示图片
      this.Image1.ImageUrl = strPath;
      采用这两种方式可以根据实际需求灵活选择。

    原文:https://blog.csdn.net/yugemengjing/article/details/78389352

    展开全文
  • vc实现图片数据库储存(转载)

    千次阅读 2008-03-05 15:22:00
    vc进行图片数据库存储2007-03-10 11:27 1 前言 数据库在实际的开发过程中常常需要存储较大的二进制数据对象,如图像、音频文件、视频文件或其他二进制数据,这些数据称之为二进制大对象BLOB(Binary Large Object)...
  • 用用户通过选一个图片,然后按submit就可以存入数据库中 其中先要建立一个表: create table test ( name varchar(20), pic blob );在MySQL的test库中 1 2 3 4 5 6 7 J...
  • 今天突然接到说是把图片储存数据库去,在网上找了半天,看到了这个,希望大家有所帮助 1.创建数据库 public class HongYeDB extends SQLiteOpenHelper { private final static int VERSION = 1; private final ...
  • 楼 taxi (当时明月在,曾照彩云归) 回复于 2001-11-30 09:04:24 得分 0//保存图片TBlobField(Table1.FieldByName(picture)).LoadFromFile(xxxx.jpg);//读取图片uses Jpeg;procedure TForm1.ShowPicture;var MS: ...
  • 如果你想把二进制的数据,比如说图片文件和HTML文件,直接保存在你的MySQL数据库,那么这篇文章就是为你而写的!我将告诉你怎样通过HTML表单来储存这些文件,怎样访问和使用这些文件。  本文概述:  在mysql中建立...
  • php中如何将图片储存数据库
  • 主要示范C# winform 上传的图片以二进制流形式储存数据库 以及 从数据库中展示图片的Demo
  • 内容索引:VB源码,数据库应用,图片,存储,数据库 本程序演示了在VB中用Access数据库储存图片,并且显示出来的功能。
  • 上传图片并以二进制插入到数据库 取出图片数据并显示 显示页面 数据库数据库表结构图
  • 通过选一个图片,然后按submit就可以存入数据库中,其中先要建立一个表: create table test ( name varchar(20), pic blob );在MySQL的test库中"http://jakarta.apache.org/struts/tags-bean"prefix="bean"%> "htt
  • 如果你想把二进制的数据,比如说图片文件和HTML文件,直接保存在你的MySQL数据库,那么这篇文章就是为你而写的!我将告诉你怎样通过HTML表单来储存这些文件,怎样访问和使用这些文件。 本文概述: 。在mysql中建立一个...
  • 可能包名不对,我用的是Androidx,请自行替换 package ... import android.net.Uri; import android.os.Parcel; import android.os.Parcelable;... * A data model containing data for a single...
  • 如何将图片储存在MySQL数据库

    万次阅读 多人点赞 2017-10-30 00:05:36
    通常对用户上传的图片需要保存到数据库中。 解决方法一般有两种: 1、将图片保存的路径存储到数据库; 2、将图片以二进制数据流的形式直接写入数据库字段中。 以下为具体方法:  一、保存图片的上传路径到...
  • 因为数据库没有图片这种数据类型,当用户上传的图片需要存储的时候,我们无法将其直接放进数据库中。 在经历了几天的探索,结合郭神的《第二行代码》调用摄像头拍照以及从相册中选择图片这两小节,我们发现了Android...
  • 通常对用户上传的图片需要保存到数据库中。 解决方法一般有两种: 1、将图片保存的路径存储到数据库; 2、将图片以二进制数据流的形式直接写入数据库字段中。 以下为具体方法: 一、保存图片的上传路径到数据库: ...
  • 问题: 在eclipse中使用Hibernate对blob...我本意是插入图片到MySql数据库中,然后报这样的错,大概意思是文件内容太长,放不进去。 分析: 经过百度查询所有人都说是MySql或者编译环境字符设置不统一造成的,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 450
精华内容 180
关键字:

数据库储存图片