- 浏览: 36237 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
lxfgrace:
感觉你的根本不是单元测试,只是调用了一下数据库操作的方法而已, ...
android SQLite数据库的增删改查以及事务的单元测试 -
jun117117:
你他妈的没创建数据库
java创建使用SQLite数据库 -
Albert24:
Oracle 修改字段类型 -
javaxhw:
我晕,我遇到的问题,确确实实是这样解决的好不好?这样怎么就不能 ...
Waiting for HOME ('android.proc..不动的解决办法 -
guoqingtai:
这样怎么可能成功呢。。。像你自己说的,这篇跟网上其它的一样,也 ...
Waiting for HOME ('android.proc..不动的解决办法
时间有限,就不写注释了,看得懂的就看,看不懂的到晚上查资料
创建一个db的androiproject项目
同时创建一个MainActivity的Acitivity.java的类
新建com.gohighsoft.db包
MainActivity.java:
package com.gohighsoft.db;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class MainActivity extends Activity {
private final static String TAG = "aa";
private PersonService personService;
private ListView listView;
// private PersonService personService;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
personService = new PersonService(this);// 前十条数据
List<Person> persons = personService.getScrollData(0, 100);
listView = (ListView) findViewById(R.id.personList);
List<HashMap<String, String>> data = new ArrayList<HashMap<String, String>>();
HashMap<String, String> title = new HashMap<String, String>();
title.put("personid", "编号");
title.put("name", "姓名");
title.put("age", "年龄");
data.add(title);
for (Person person : persons) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("personid", String.valueOf(person.getId()));
map.put("name", person.getName());
map.put("age", String.valueOf(person.getAge()));
data.add(map);
}
SimpleAdapter adapter = new SimpleAdapter(MainActivity.this, data,
R.layout.personitem,
new String[] { "personid", "name", "age" }, new int[] {
R.id.personid, R.id.name, R.id.age });
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
ListView listView = (ListView) parent;
HashMap<String, String> itemData = (HashMap<String, String>) listView
.getItemAtPosition(position);
String personid = itemData.get("personid");
String name = itemData.get("name");
String age = itemData.get("age");
Log.i(TAG, "className" + view.getClass().getName());
// 打印view的类名
Log.i("TAG", "personid=" + personid + ",name=" + name + ",age="
+ age);
Log.i(TAG, "result=" + (position == id));
}
});
}
}
在Layout文件夹下创建personitem.xml的界面配置代码:
<?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">
<TextView android:layout_width="60px" android:layout_height="60px"
android:id="@+id/personid" />
<TextView android:layout_width="160px" android:layout_height="wrap_content"
android:layout_toRightOf="@id/personid" android:layout_alignTop="@id/personid"
android:gravity="center_horizontal" android:id="@+id/name" />
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_toRightOf="@id/name"
android:layout_alignTop="@id/name" android:id="@+id/age" />
</LinearLayout>
新建一个工具类DataBaseHaler.java:
package com.gohighsoft.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class DataBaseHaler extends SQLiteOpenHelper {
private static final String NAME = "sharp.db";// 。db可有可无
private static final int version = 1;// 版本号不能为0
public DataBaseHaler(Context context) {
super(context, NAME, null, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
Log.i("aa","1111111111111");
db.execSQL("CREATE TABLE person(personid integer primary key autoincrement,name varchar(20),age integer)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVewsion) {
Log.i("aa","22222222222222");
db.execSQL("DROP TABLE IF EXISTS PERSON");
onCreate(db);
}
}
新近一个PersonService.java的服务类:
package com.gohighsoft.db;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
public class PersonService {
private DataBaseHaler databaseHelper;
private Context context;
public PersonService(Context context) {
this.context = context;
databaseHelper = new DataBaseHaler(context);
}
public void savesTrannces(Person person) {
Log.i("aa", "4444444444444");
SQLiteDatabase db = databaseHelper.getWritableDatabase();
db.beginTransaction();// 开始事务
try {
for(int i=0;i<100;i++){
db.execSQL("insert into person(name,age) values(?,?)",
new Object[] { person.getName(), person.getAge() });
}
db.execSQL("insert into personww(namedd,age) values(?,?)",
new Object[] { person.getName(), person.getAge() });
db.setTransactionSuccessful();
} catch (Exception e) {
//db.endTransaction();// 事务结束;
Log.i("aa","wwwwwwwwwwwwwwwwwwwwwwwww");
}
db.endTransaction();// 事务结束;
Log.i("aa", "55555555555555555555");
}
public void save1(Person person) {
SQLiteDatabase db = databaseHelper.getWritableDatabase();
db.beginTransaction();// 开始事务
Log.i("aa", "uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu");
try {
db.setTransactionSuccessful();
db.execSQL("insert into person(name,age) values('Tom',21)");
} catch (Exception e) {
Log.i("aa", "trttttttttttttttttttttttttttttttttttttttttttttt");
}
db.endTransaction();// 事务结束;
}
public void save2(Person person) {
SQLiteDatabase db = databaseHelper.getWritableDatabase();
db.beginTransaction();// 开始事务
Log.i("aa", "uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu");
try {
db.setTransactionSuccessful();
for(int i=0;i<100;i++){
db.execSQL("insert into person(name,age) values(?,?)",
new Object[] { person.getName(), person.getAge() });
}
} catch (Exception e) {
Log.i("aa", "trttttttttttttttttttttttttttttttttttttttttttttt");
}
db.endTransaction();// 事务结束;
}
public void update(Person person) {
SQLiteDatabase db = databaseHelper.getWritableDatabase();
db.execSQL(
"update person set name=?,age=? where personid=?",
new Object[] { person.getName(), person.getAge(),
person.getId() });
}
public Person find(Integer id) {
SQLiteDatabase db = databaseHelper.getReadableDatabase();
Cursor cursor = db.rawQuery(
"select personid,name,age from person where personid=?",
new String[] { String.valueOf(id) });
if (cursor.moveToNext()) {
Person person = new Person();
person.setId(cursor.getInt(cursor.getColumnIndex("personid")));
person.setName(cursor.getString(1));
person.setAge(cursor.getInt(2));
return person;
}
cursor.close();
return null;
}
public void delete(Integer id) {
SQLiteDatabase db = databaseHelper.getWritableDatabase();
db.execSQL("delete fro person where personid=?", new Object[] { id });
}
public List<Person> getScrollData(int firstResult, int maxResult) {
List<Person> persons = new ArrayList<Person>();
SQLiteDatabase db = databaseHelper.getReadableDatabase();
Cursor cursor = db.rawQuery(
"select personid,name,age from person limit ?,?",
new String[] { String.valueOf(firstResult),
String.valueOf(maxResult) });// firstResult开始索引
while (cursor.moveToNext()) {// maxResult每页获取的记录数
Log.i("aa", "333333333333");
Person person = new Person();
person.setId(cursor.getInt(cursor.getColumnIndex("personid")));
person.setName(cursor.getString(1));
person.setAge(cursor.getInt(2));
persons.add(person);
}
cursor.close();
return persons;
}
public long getCount() {
SQLiteDatabase db = databaseHelper.getReadableDatabase();
Cursor cursor = db.rawQuery("select count(*) from person", null);
// 没有占位符参数的话,直接用null
cursor.moveToFirst();
Long count = cursor.getLong(0);
cursor.close();
return count;
}
}
实体类传递数据:Person.java
package com.gohighsoft.db;
public class Person {
private Integer id;
private String name;
private Integer age;
public Person() {
};
public Person(String name, Integer age) {
this.name = name;
this.age = age;
}
public Integer getId(){
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String toString() {
return "Person [age=" + age + ",id=" + id + ",name" + name + "]";
}
}
最后main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView android:id="@+id/personList" android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
好了到此为止算是完成了,直接运行MainActivity.java就可以了
看不懂的自己上网去查去,不再详细的解释了.
创建一个db的androiproject项目
同时创建一个MainActivity的Acitivity.java的类
新建com.gohighsoft.db包
MainActivity.java:
package com.gohighsoft.db;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class MainActivity extends Activity {
private final static String TAG = "aa";
private PersonService personService;
private ListView listView;
// private PersonService personService;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
personService = new PersonService(this);// 前十条数据
List<Person> persons = personService.getScrollData(0, 100);
listView = (ListView) findViewById(R.id.personList);
List<HashMap<String, String>> data = new ArrayList<HashMap<String, String>>();
HashMap<String, String> title = new HashMap<String, String>();
title.put("personid", "编号");
title.put("name", "姓名");
title.put("age", "年龄");
data.add(title);
for (Person person : persons) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("personid", String.valueOf(person.getId()));
map.put("name", person.getName());
map.put("age", String.valueOf(person.getAge()));
data.add(map);
}
SimpleAdapter adapter = new SimpleAdapter(MainActivity.this, data,
R.layout.personitem,
new String[] { "personid", "name", "age" }, new int[] {
R.id.personid, R.id.name, R.id.age });
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
ListView listView = (ListView) parent;
HashMap<String, String> itemData = (HashMap<String, String>) listView
.getItemAtPosition(position);
String personid = itemData.get("personid");
String name = itemData.get("name");
String age = itemData.get("age");
Log.i(TAG, "className" + view.getClass().getName());
// 打印view的类名
Log.i("TAG", "personid=" + personid + ",name=" + name + ",age="
+ age);
Log.i(TAG, "result=" + (position == id));
}
});
}
}
在Layout文件夹下创建personitem.xml的界面配置代码:
<?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">
<TextView android:layout_width="60px" android:layout_height="60px"
android:id="@+id/personid" />
<TextView android:layout_width="160px" android:layout_height="wrap_content"
android:layout_toRightOf="@id/personid" android:layout_alignTop="@id/personid"
android:gravity="center_horizontal" android:id="@+id/name" />
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_toRightOf="@id/name"
android:layout_alignTop="@id/name" android:id="@+id/age" />
</LinearLayout>
新建一个工具类DataBaseHaler.java:
package com.gohighsoft.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class DataBaseHaler extends SQLiteOpenHelper {
private static final String NAME = "sharp.db";// 。db可有可无
private static final int version = 1;// 版本号不能为0
public DataBaseHaler(Context context) {
super(context, NAME, null, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
Log.i("aa","1111111111111");
db.execSQL("CREATE TABLE person(personid integer primary key autoincrement,name varchar(20),age integer)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVewsion) {
Log.i("aa","22222222222222");
db.execSQL("DROP TABLE IF EXISTS PERSON");
onCreate(db);
}
}
新近一个PersonService.java的服务类:
package com.gohighsoft.db;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
public class PersonService {
private DataBaseHaler databaseHelper;
private Context context;
public PersonService(Context context) {
this.context = context;
databaseHelper = new DataBaseHaler(context);
}
public void savesTrannces(Person person) {
Log.i("aa", "4444444444444");
SQLiteDatabase db = databaseHelper.getWritableDatabase();
db.beginTransaction();// 开始事务
try {
for(int i=0;i<100;i++){
db.execSQL("insert into person(name,age) values(?,?)",
new Object[] { person.getName(), person.getAge() });
}
db.execSQL("insert into personww(namedd,age) values(?,?)",
new Object[] { person.getName(), person.getAge() });
db.setTransactionSuccessful();
} catch (Exception e) {
//db.endTransaction();// 事务结束;
Log.i("aa","wwwwwwwwwwwwwwwwwwwwwwwww");
}
db.endTransaction();// 事务结束;
Log.i("aa", "55555555555555555555");
}
public void save1(Person person) {
SQLiteDatabase db = databaseHelper.getWritableDatabase();
db.beginTransaction();// 开始事务
Log.i("aa", "uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu");
try {
db.setTransactionSuccessful();
db.execSQL("insert into person(name,age) values('Tom',21)");
} catch (Exception e) {
Log.i("aa", "trttttttttttttttttttttttttttttttttttttttttttttt");
}
db.endTransaction();// 事务结束;
}
public void save2(Person person) {
SQLiteDatabase db = databaseHelper.getWritableDatabase();
db.beginTransaction();// 开始事务
Log.i("aa", "uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu");
try {
db.setTransactionSuccessful();
for(int i=0;i<100;i++){
db.execSQL("insert into person(name,age) values(?,?)",
new Object[] { person.getName(), person.getAge() });
}
} catch (Exception e) {
Log.i("aa", "trttttttttttttttttttttttttttttttttttttttttttttt");
}
db.endTransaction();// 事务结束;
}
public void update(Person person) {
SQLiteDatabase db = databaseHelper.getWritableDatabase();
db.execSQL(
"update person set name=?,age=? where personid=?",
new Object[] { person.getName(), person.getAge(),
person.getId() });
}
public Person find(Integer id) {
SQLiteDatabase db = databaseHelper.getReadableDatabase();
Cursor cursor = db.rawQuery(
"select personid,name,age from person where personid=?",
new String[] { String.valueOf(id) });
if (cursor.moveToNext()) {
Person person = new Person();
person.setId(cursor.getInt(cursor.getColumnIndex("personid")));
person.setName(cursor.getString(1));
person.setAge(cursor.getInt(2));
return person;
}
cursor.close();
return null;
}
public void delete(Integer id) {
SQLiteDatabase db = databaseHelper.getWritableDatabase();
db.execSQL("delete fro person where personid=?", new Object[] { id });
}
public List<Person> getScrollData(int firstResult, int maxResult) {
List<Person> persons = new ArrayList<Person>();
SQLiteDatabase db = databaseHelper.getReadableDatabase();
Cursor cursor = db.rawQuery(
"select personid,name,age from person limit ?,?",
new String[] { String.valueOf(firstResult),
String.valueOf(maxResult) });// firstResult开始索引
while (cursor.moveToNext()) {// maxResult每页获取的记录数
Log.i("aa", "333333333333");
Person person = new Person();
person.setId(cursor.getInt(cursor.getColumnIndex("personid")));
person.setName(cursor.getString(1));
person.setAge(cursor.getInt(2));
persons.add(person);
}
cursor.close();
return persons;
}
public long getCount() {
SQLiteDatabase db = databaseHelper.getReadableDatabase();
Cursor cursor = db.rawQuery("select count(*) from person", null);
// 没有占位符参数的话,直接用null
cursor.moveToFirst();
Long count = cursor.getLong(0);
cursor.close();
return count;
}
}
实体类传递数据:Person.java
package com.gohighsoft.db;
public class Person {
private Integer id;
private String name;
private Integer age;
public Person() {
};
public Person(String name, Integer age) {
this.name = name;
this.age = age;
}
public Integer getId(){
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String toString() {
return "Person [age=" + age + ",id=" + id + ",name" + name + "]";
}
}
最后main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView android:id="@+id/personList" android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
好了到此为止算是完成了,直接运行MainActivity.java就可以了
看不懂的自己上网去查去,不再详细的解释了.
发表评论
-
androi文件读写操作
2010-10-29 09:23 918废话少说,直接上代码,看不懂的地方自己去网上查,以下代码都在我 ... -
android SQLite数据库的增删改查以及事务的单元测试
2010-10-29 09:20 2657废话少说,为了这个数据库整理一两天的时间,下面就把代码直接贴出 ... -
Android的显示单位的知识
2010-10-29 09:19 1012Android的显示单位的知识,在这里复习一下: px(pix ... -
android短信发射器
2010-10-29 09:19 981string.xml添加常量 : <?xml vers ... -
android单元测试用例和日志输出
2010-10-28 13:41 1739原文地址: http://blog.sina.com.cn/s ... -
android的Activity转换
2010-10-28 13:40 722原文地址:http://blog.sina.com.cn/s/ ... -
android生命周期
2010-10-28 13:39 746原文地址: http://blog.sina.com.cn/s ... -
android拨号器的实现
2010-10-28 13:39 1983原文地址:http://blog.sina ... -
Android下调用收发短信邮件等
2010-10-28 13:37 1133原文地址: http://blog.sina.com.cn/s ... -
学习android之布局
2010-10-28 13:36 952原文地址:http://blog.sina.com.cn/s/ ... -
Waiting for HOME ('android.proc..不动的解决办法
2010-10-28 13:35 1820遇到启动android 后到了Waiting for HOME ...
相关推荐
您想从您的Android设备解密和/或提取msgstore.db数据库。 使用--install-sdk标志安装SDK 将Android设备连接到USB端口并启动WhatsDump 等待脚本以在模拟器上快速注册您的电话号码 等待带有确认码的SMS或CALL 输入...
当地银行打算安装新的自动取款机(ATM),允许用户在其上进行基本的银行交易。每个用户在银行只能拥有一个账号。ATM用户应当能够查看他们的账户余额,提取现金,并存入资金。银行每天装入500张面值为20美元的钞票。 ...
)使用不同的方法来获取文本 - 得到了在屏幕上显示的文本区域形象,打破它成一个网格,并比较了网格的内容到数据库,以确定字符。支持文本输出到日志文件。包括用于全自动内置在网页的翻译功能,虽然质量差,翻译。...
X-plore可以在LAN(局域网)中的其他计算机上显示共享文件夹。 系统允许访问连接到LAN的计算机上的共享文件夹,如果它支持SMB协议,则甚至可以访问远程服务器。 X-plore可以访问各种Web存储“云”服务器,并访问其...
X-plore可以在LAN(局域网)中的其他计算机上显示共享文件夹。 该系统允许访问连接到LAN的计算机上的共享文件夹,如果支持SMB协议,甚至可以访问远程服务器。 X-plore可以访问各种Web存储“云”服务器,并访问其...
从模拟器中抽取出来的,用以支持android4.0以上版本的sqlite,替换掉手机中的同名文件即可。...如果手机运行sqlite3提示不存在或报错,证明版本不符,可以在ADT上运行同版本模拟器,再从模拟器中提取对应的文件。
Makefile在SQLite数据库中聚合来自系统的各种信息,并根据该信息检查内部文本文件。 收集的详细信息包括: 已安装的macOS以及iOS,tvOS和watchOS模拟器的所有文件名二进制文件与库的链接所有可执行文件的权利嵌入二...
一个简单的应用程序,它从数据库中提取有关机场的数据,并将其位置显示为地图视图中的地图图钉。 要求 安装和。 下载并配置 。 设备要求 要运行该应用程序,您需要: 运行 Android 2.3 或更高版本并包含 Google ...
在本文中,我们分析了使用网络模拟器提高性能的水产养殖处理物联网的网络路由。 在该系统的实施中,我们经历了三个层次。 在第一级中,我们分析了具有4、10和20个节点的网络拓扑,并借助网络仿真工具提取了诸如吞吐...
用于分析星际迷航中单词使用的脚本:原始系列: :用于下载粉丝脚本、创建脚本数据库和每个角色对话的散景图的脚本用于分析 CDC 死亡率文件的脚本: :用于在 CDC 死亡率数据库中显示十种异常死亡原因的脚本。...
书中提供了大量的实例,可帮助读者快速掌握如何在.NET平台下开发功能强大的ASP.NET应用程序。本书适合有一些基础的ASP.NET初级程序员以及准备迁移到ASP.NET 2.0的编程老手。该书与《ASP.NET 2.0入门经典(第4版)》...
Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板 使用Java语言编写的一款用于反映颜色变化的面板,也就是大家...
单片机开发程序 安装 Keil C51 集成开发软件,必须满足小的硬件和软件要求,才能确保编译器以及 其他程序功能正常,必须具有: (1) Pentium、Pentium-II 或兼容处理器的 PC;... 直观明了的信息显示窗口。
Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板 使用Java语言编写的一款用于反映颜色变化的面板,也就是大家...
显示更多信息635 18.5 身份和模拟637 18.6 通过IIS进行保护640 18.6.1 IP地址和域名限制640 18.6.2 使用文件扩展名641 18.6.3 使用新的 ASP.NET MMC插件643 18.7 小结644 第19章 状态管理645 19.1 如何...
存储库中提取时,项目源将不断更新。 StygianCore: | | 艾泽拉斯核心: | 下载 StygianCore 重新打包(版本 v2019.03.10) StygianCore HD 客户端升级(发布 v2019.03.10) 问候 欢迎来到 StygianCore。 这个重新...
将种子文件提取到种子文件夹中 运行AuthServer.exe并键入/ db以重新创建数据库。 “设置领域清单127.0.0.1” 内部命令: X级(授予级别*) gps(显示坐标) npc XX(单位输入) 链接 谢谢: 链接 !
项目涉及在传感器和最终应用之间创建平台。 来自传感器的数据由网关(raspberry pi)收集并存储。 服务器从注册的网关中... 为了测试平台,将在该平台之上构建A / C控制器模拟器,该模拟器接收数据并采取相应的措施。
Five)服务器模拟器。 这是游戏服务器部分。 另外两个是l2cr_ls(登录服务器)和l2cr_core(游戏服务器和登录服务器使用的代码)。 要求 为了让游戏服务器正常工作,它需要以下内容: Ruby 登录服务器 与登录服务器...