我正在使用数据库来存储日期,并希望根据where claus中给出的id返回单个列.
public String getPmax(String serial) {
String[] columns = new String[]{KEY_SERIAL, KEY_PMAX};
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, "serial = " + serial,
null, null, null, null);
String result = "nothing found";
if(c != null) {
int iPmax = c.getColumnIndex(KEY_PMAX);
c.moveToFirst();
result = c.getString(iPmax);
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
如果我使用数据库中的序列,但当我使用不在数据库中的序列时,它会给我一个强制关闭,这个代码可以工作!
它说:
04-11 16:31:19.423: E/AndroidRuntime(21226): java.lang.RuntimeException: Unable to start activity ComponentInfo{nl.janjanus.solardetect/nl.janjanus.solardetect.DatabaseView}: android.database.sqlite.SQLiteException: no such column: g: , while compiling: SELECT serial, pmax FROM SolareCel WHERE serial = g
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:我如何检查是否有结果?或者我是否需要检查给定的序列是否是数据库中的序列?
我在Visual Studio(Community 2015)中使用代码片段来自动化该行Debug.LogFormat("");.该代码段正在运行,但它在开头添加了一个额外的空行(输入),因此使用代码段logtabtab会产生以下代码:
// blank line
Debug.LogFormat("");
Run Code Online (Sandbox Code Playgroud)
代替
Debug.LogFormat("");
Run Code Online (Sandbox Code Playgroud)
这是我使用的代码片段的XML:
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets
xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>Unity LogFormat</Title>
<Author>Faas</Author>
<Shortcut>log</Shortcut>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>Message</ID>
<ToolTip>Message</ToolTip>
<Default></Default>
</Literal>
</Declarations>
<Code Language="CSharp"><![CDATA[Debug.LogFormat("$Message$");]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
Run Code Online (Sandbox Code Playgroud) 我正在构建一个需要确定应用程序运行时间的应用程序,因此我可以显示他/她使用的应用程序的用户统计信息.我在网上找到了多种解决方案,但这些解决方案存在缺陷.
以下是我找到的两个最佳选择:
使用带有服务的轮询机制.此解决方案似乎电池效率低,并且取决于不推荐使用的方法(因为API级别21):
getRunningTasks(int maximum)
我还在应用程序启动或停止时搜索了一个意图触发,但似乎没有(见摘要).这篇文章证实了这一点.我还找到了一个类:ActivityLifecycleCallbacks,当活动改变状态时,它会获得回调.但这仅适用于内部(在您自己的应用程序中读取)使用.
所以我的想法是使用服务来轮询运行除棒棒糖之外的版本的设备上的当前前台应用程序,并在运行lollipop或更高版本的设备上使用新的API.但这种"服务"理念是否是最好的选择,因为正如我之前所说的,电池效率似乎不高?也许有更好的选择?
FAAS
我正在尝试将我的程序之一链接到libevent。我使用 CMake 作为构建系统。我的项目结构如下:
\n\nmy_project\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.md\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 build\n\xe2\x94\x82\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Build stuff\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 software\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.md\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 include\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 libraries\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 libevent\n \xe2\x94\x82 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 anotherlibrary\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 prog1\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 prog2\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 prog3\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\nRun Code Online (Sandbox Code Playgroud)\n\nprog1 的 CMakeList.txt(需要链接到 libevent 的那个)
\n\ncmake_minimum_required(VERSION 2.6)\nproject (prog1)\n\nfile(GLOB prog1\n "*.h"\n "*.cpp"\n)\n\ninclude_directories("${PROJECT_INCLUDE_DIR}/libevent/include")\n\nadd_executable(${PROJECT_NAME} ${prog1})\ntarget_link_libraries(${PROJECT_NAME} event_core)\nRun Code Online (Sandbox Code Playgroud)\n\n但是当我构建项目时,make 找不到 libevent 构建的库。它搜索:libraries/libevent/lib/libevent_core.a这是错误的路径,因为 libevent 在里面构建了它的库:my_project/build/software/libraries/libevent/lib/libevent_core.a
我如何告诉 CMake 在那里搜索库?我已经将以下行添加到我的 Cmake …