HDU-安卓程序开发之读写资源文件/SQLite数据库/数据共享
程序员文章站
2022-03-08 15:46:58
前言这次为了做更好看的界面,更新了一下androidstudio到4.1.1,踩了很多坑,最后还是手机热点+*下载安装包,在线更新gradle弄好的,然后新建一个工程又出问题(我和我的室友的问题不一样,这里阐述一下我遇到的问题和解决方案https://blog.csdn.net/cshoney/article/details/90142447)不多说了,开搞!界面读写资源文件SQL数据库的简单操作Java源码读写资源文件package fourvolt69.homework;...
前言
这次为了做更好看的界面,更新了一下android studio到4.1.1
踩了很多坑,最后还是手机热点+*下载安装包,在线更新gradle弄好的,然后新建一个工程又出问题
(我和我的室友的问题不一样,这里阐述一下我遇到的问题和解决方案https://blog.csdn.net/cshoney/article/details/90142447)
不多说了,开搞!
界面
读写资源文件
SQL数据库的简单操作
Java源码
读写资源文件
package fourvolt69.homework;
import androidx.appcompat.app.AppCompatActivity;
import android.content.res.Resources;
import android.content.res.XmlResourceParser;
import android.os.Bundle;
import android.util.Xml;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import org.xmlpull.v1.XmlPullParser;
import java.io.IOException;
import java.io.InputStream;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button)findViewById(R.id.button);
Button button2 = (Button)findViewById(R.id.button2);
Button button3 = (Button)findViewById(R.id.button3);
TextView textView = (TextView)findViewById(R.id.textView);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Resources resources = getResources();
InputStream inputStream = resources.openRawResource(R.raw.raw_file);
try {
byte[] reader = new byte[inputStream.available()];
while (inputStream.read(reader)!= -1){
}
textView.setText(new String(reader));
}catch (IOException e){
e.printStackTrace();
}finally {
try {
inputStream.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Resources resources = getResources();
XmlResourceParser parser=resources.getXml(R.xml.people);
String msg="";
try {
while(parser.next()!= XmlPullParser.END_DOCUMENT){
String people=parser.getName();
String name = null;
String age = null;
String height = null;
if((people!=null)&&people.equals("person")){
int count = parser.getAttributeCount();
for (int i=0;i<count;i++){
String attrName=parser.getAttributeName(i);
String attrValue=parser.getAttributeValue(i);
if ((attrName!=null)&&attrName.equals("name")){
name=attrValue;
}else if((attrName!=null)&&attrName.equals("age")){
age=attrValue;
}else if((attrName!=null)&&attrName.equals("height")){
height=attrValue;
}
}
if((name!=null)&&(age!=null)&&(height!=null)){
msg+="姓名:"+name+",年龄:"+age+",身高:"+height+"\n";
}
}
}
}catch (Exception e){
e.printStackTrace();
}
textView.setText(msg);
}
});
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
textView.setText("清除显示");
}
});
}
}
SQL数据库的简单操作
package fourvolt69.homework;
import androidx.appcompat.app.AppCompatActivity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
SQLiteDatabase db_read,db_write;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button insertButton = (Button)findViewById(R.id.button);
Button updateButton = (Button)findViewById(R.id.button2);
Button deleteButton = (Button)findViewById(R.id.button3);
Button queryButton = (Button)findViewById(R.id.button4);
TextView textView = (TextView)findViewById(R.id.textView);
SQLiteOpenHelper helper=new SQLiteOpenHelper(MainActivity.this, "my.db",null,1) {
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL("create table people(id int, name String)");
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
};
db_read=helper.getReadableDatabase();
db_write=helper.getWritableDatabase();
insertButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ContentValues contentValues=new ContentValues();
contentValues.put("id",3);
contentValues.put("name","张三");
db_write.insert("people",null,contentValues);
}
});
updateButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ContentValues contentValues=new ContentValues();
contentValues.put("id",2);
contentValues.put("name","李二");
//db_write.update("people",contentValues,"id=?",new String[]{"3"});
db_write.update("people",contentValues,"id=3",null);
}
});
deleteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
db_write.delete("people","id=2",null);
}
});
queryButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String msg="";
Cursor cursor=db_read.query("people",new String[]{"id","name"},"id=2",null,null,null,null);
while (cursor.moveToNext()){
String name=cursor.getString(cursor.getColumnIndex("name"));
msg+=name;
}
textView.setText(msg);
cursor.close();
}
});
}
}
SQLite的终端命令行操作
- 找到platform-tools文件夹 在android studio中打开安卓模拟机,在命令提示符中,cd到platform-tools目录
在Android studio的设置中可以找到sdk的位置,platform-tools在其下
- 在命令提示符中进入项目的包的位置 输入adb shell,输入su,进入该虚拟机的Linux系统权限模式
(ls可以显示当前路径下的文件列表)
进入data/data/项目文件夹
- 手工建库操作
如果你没有databases文件夹,则需要创建一个,mkdir databases
进入databases文件夹,cd databases
输入sqlite3 “数据库名字”.db进入数据库交互模式(自己取,下文以friends.db为例)
输入create table peopleinfo(_id integer primary key autoincrement, name text not null, age integer, height float);
这里是在friends.db下创建了一张叫peopleinfo的表,数据有 id name age height几种
输入.table可以查看数据库内全部的表
不想再手工建一次了,图片大家自己脑补吧
- 添加、修改、删除、显示
输入insert into peopleinfo values(null,“Tom”,22,1.78); 这是添加操作
输入update peopleinfo set name=“Jack” where name=“Tom”; 这是把tom的名字改成jack
输入delete from peopleinfo where name=“Jack”; 这是把名字叫jack的一组数据删掉
输入select from * peopleinfo; 这是展示peopleinfo这张表
如果把 * 号换成属性名如 _id 则只列出 _id栏的值,如果在显示语句之前添加.mode column语句,则以表格的形式列出
输入.quit退出sqlite3
同上,请自行脑补配图
结语
下周上课应该会讲数据共享的内容,到时候再更新
没什么好说的,给大家劈个叉吧
本文地址:https://blog.csdn.net/fourvolt/article/details/110997874