我执行一个select语句.如果结果集中的行数小于或等于某个数字,则返回所选行.如果行数大于某个数字,我想不返回任何行.
运行select并进行比较后,如果行数大于允许的行数,我执行:
SELECT TOP 0 NULL AS ID
Run Code Online (Sandbox Code Playgroud)
我发现的是,最初选择的两个记录也与第二个结果集一起返回,其中一个列名为ID,没有记录.显然,初始select语句仍然被返回,我想避免这种情况.有什么办法吗?
编辑:忘了添加我需要返回一个状态值,指示是否有更多的行比允许的行.这意味着我必须得到计数,并且更愿意拥有计数,而不必两次运行相同的查询.因此,如果允许的最大行数为25但实际存在零行,则返回状态为0.但是如果行数大于25,那么我不会返回任何行,但我将状态设置为 - 1.
我想使用SharedPreferences存储和检索我的应用程序中所有活动都可访问的数据.那可能吗?到目前为止,我一直这样做,以便为特定活动存储数据.
如果我的数字大于20,但可以平均分为2而没有任何余数,我想确定哪个数字最接近20.例如:
对于2048年,除以2足够的时间会使我达到16,这是我可以达到的最接近的20.如果数字是800,则最接近的是25.
我可以写一个循环,只是继续划分和比较范围,并选择最接近的值.是否有更简单的方法,可能是通过移位?
编辑:当我说它平均除以2时,我的意思是它一直分为2.70个数字只能平均分为35个.像2048或1024这样的数字将一直均分为2.
样本编号:2048,1920,1600,1536,1080..640,352,320,176.这些是来自摄像机的典型图像尺寸.
我不得不将Looper添加到以下代码中:
public class MyRunnable implements Runnable
{
@Override
public void run()
{
Looper.prepare();
final Looper looper = Looper.myLooper();
new Handler().postDelayed(
new Runnable()
{
@Override
public void run()
{
try
{
}
catch (Exception ex)
{
}
finally
{
looper.quit();
}
}
}, 100);
Looper.loop();
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,我在runnable中有一个runnable.嵌套的runnable通过Handler执行.最初我没有Looper但Android抱怨我需要在执行另一个线程之前调用Looper.prepare.
我读到了Looper,但它似乎仍然有点神秘.它似乎像某种内部消息传递管道.我不清楚为什么这是必要的,因为没有消息从我的外部runnable到我的内部runnable.即使这是真的,似乎Android只是制定了一个硬规则,如果你从一个线程调用一个线程,你还必须调用Looper.prepare.即使我接受原样,它仍然无法理解为什么我需要调用looper.loop和looper.quit.如果我省略了Looper.loop,我的Handler永远不会运行,这是不明确的.Looper.loop做了什么让我的Handler能够运行?
我的日期是格式为“2013-12-31”的字符串。我想根据用户的设备设置将其转换为本地日期,但只显示月份和日期。因此,如果用户的设备设置为德语,则日期应转换为“31.12”。在德国,首先是日,然后是月。我不希望包括年份。
在这段代码中:
<input class="form-control" ng-model="actionText" />
Run Code Online (Sandbox Code Playgroud)
AngularJS会更新模型actionText作为用户类型的东西.如果这种模式被其他地方使用,如控制器,每个字符键入它就会被更新.我可以想到那些实际上可能是坏事的情况.也许您只需要用户将焦点从输入移动到其他内容后的模型值,例如当您需要在输入完成时验证输入时.我可以使用Javascript的模糊函数来设置处理程序,以确定何时焦点丢失,但这似乎与Angular的方式相反.输入失去焦点后是否有AngularJS更新模型的方法?
启动Android Studio 1.2时,我收到错误消息:
插件org.jetbrains.android无法保存设置并已被禁用
我尝试重新启动甚至下载了最新的Android插件,但它没有帮助.有什么建议?
我用来定义私有的前缀为'm'的成员变量.例:
private boolean mDone;
Run Code Online (Sandbox Code Playgroud)
getter/setter通常如下所示:
public boolean getDone() }
return mDone;
}
public void setDone(boolean done) {
mDone = done;
}
Run Code Online (Sandbox Code Playgroud)
Intellij IDE确实有一种创建这些getter/setter的方法,但是它将'm'前缀添加到getter/setter方法的名称中.有办法防止这种情况吗?
假设我想将以下代码作为可重用的组件:
fun <T> MutableList<T>.swap(index1: Int, index2: Int) {
val tmp = this[index1] // 'this' corresponds to the list
this[index1] = this[index2]
this[index2] = tmp
}
Run Code Online (Sandbox Code Playgroud)
我想在我的应用程序中的任何地方使用它,如下所示:
val l = mutableListOf(1, 2, 3)
l.swap(0, 2)
Run Code Online (Sandbox Code Playgroud)
如果我错了,请纠正我,但我相信函数扩展声明可以存在于类之外。那么在 Android 应用程序中,我应该把这个声明放在哪里?或者它甚至重要吗?compile 是否只编译代码,而不管扩展在哪里声明并使其可在全局范围内重用,还是必须使其成为类的一部分?
在此示例代码中:
class MyFragment: Fragment {
init {
lifecycleScope.launch {
whenStarted {
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
whenStarted 中的代码仅在片段的生命周期开始时运行。我不清楚这到底是做什么的,而不仅仅是在 onViewCreated 内部启动一个协程。文档状态:
如果 Lifecycle 在协程通过 when 方法之一处于活动状态时被销毁,则协程将自动取消。
那么这是您使用lifecycleScope.launch 的唯一原因吗?如果生命周期终止,让协程自动终止?