我有一个SQLite表:
CREATE TABLE regions (_id INTEGER PRIMARY KEY, name TEXT, UNIQUE(name));
Run Code Online (Sandbox Code Playgroud)
还有一些Android代码:
Validate.notBlank(region);
ContentValues cv = new ContentValues();
cv.put(Columns.REGION_NAME, region);
long regionId =
db.insertWithOnConflict("regions", null, cv, SQLiteDatabase.CONFLICT_IGNORE);
Validate.isTrue(regionId > -1,
"INSERT ON CONFLICT IGNORE returned -1 for region name '%s'", region);
Run Code Online (Sandbox Code Playgroud)
在重复行上insertWithOnConflict()返回-1,表示错误,然后Validate抛出:
INSERT ON CONFLICT IGNORE returned -1 for region name 'Overseas'
Run Code Online (Sandbox Code Playgroud)
该ON冲突文档的SQLite(重点煤矿)规定:
当发生适用的约束冲突时,IGNORE解析算法会跳过包含约束违规的一行,并继续处理SQL语句的后续行,就像没有出错一样.包含约束违例的行之前和之后的其他行将正常插入或更新.使用IGNORE冲突解决算法时不会返回错误.
在Android的insertWithOnConflict()文件规定:
如果输入参数'conflictAlgorithm'= CONFLICT_IGNORE则返回新插入行的行ID或现有行的主键,如果有任何错误,则返回-1
CONFLICT_REPLACE不是一个选项,因为替换行将更改其主键而不是仅返回现有键:
sqlite> INSERT INTO regions (name) VALUES ("Southern");
sqlite> INSERT INTO regions (name) VALUES ("Overseas");
sqlite> …Run Code Online (Sandbox Code Playgroud) 我有一个SQL查询(由LINQ to Entities生成),大致如下所示:
SELECT * FROM [mydb].[dbo].[employees]
JOIN [mydb].[dbo].[industry]
ON jobs.industryId = industry.id
JOIN [mydb].[dbo].[state]
ON jobs.stateId = state.id
JOIN [mydb].[dbo].[positionType]
ON jobs.positionTypeId = positionType.id
JOIN [mydb].[dbo].[payPer]
ON jobs.salaryPerId = payPer.id
JOIN [mydb].[dbo].[country]
ON jobs.countryId = country.id
WHERE countryName = 'US'
ORDER BY startDatetime
Run Code Online (Sandbox Code Playgroud)
查询返回大约1200行,我认为这不是一个巨大的数额.不幸的是,它还需要大约16秒.如果没有ORDER BY,查询将花费<1秒.
我已经使用SQL Server Management Studio在startDatetime列上添加索引,并在"cityId,industryId,startDatetime,positionTypeId,payPerId,stateId"上使用聚簇索引(即我们在"作业"中使用的所有列JOIN和我们使用ORDER BY的列.)我已经在JOIN中使用的每个列上都有单独的索引.不幸的是,这并没有使查询更快.
我跑了一个showplan得到了:
|--Nested Loops(Inner Join, OUTER REFERENCES:([mydb].[dbo].[jobs].[cityId]))
|--Nested Loops(Inner Join, OUTER REFERENCES:([mydb].[dbo].[jobs].[stateId]))
| |--Nested Loops(Inner Join, OUTER REFERENCES:([mydb].[dbo].[jobs].[industryId]))
| | |--Nested Loops(Inner Join, OUTER REFERENCES:([mydb].[dbo].[jobs].[positionTypeId]))
| | | |--Nested Loops(Inner …Run Code Online (Sandbox Code Playgroud) 我有一个用户控件,用于显示搜索结果.显示的每个结果的HTML将根据显示的结果类型而变化:"联系人"以一种方式显示,"新闻文章"显示在另一种中,等等.大约有10种不同类型的结果都被标记出来当他们使用HTML时会有所不同 - 所以我需要大约10个不同的模板用于个别结果,我可以根据显示的当前项目进行选择.
我用a asp:Repeater来显示结果,但我不知道如何选择合适的模板asp:Repeater <ItemTemplate>.理想情况下,我希望ASP根据通过searchResultsRepeater.DataSource- 传入的对象类型选择合适的模板使用- 但不幸的是我不能使用switch on type(请参阅此博客条目,了解C#switch on type).但是,我可以通过枚举值来显示所显示的结果类型.
在后端C#代码,我有一个抽象内嵌SearchResult类,并且该类的孩子喜欢ContactSearchResult,NewsArticleSearchResult等searchResultsRepeater.DataSource将被绑定到List<SearchResult>.每个字段都SearchResult包含一个ResultListingType type字段,用于显示要显示的列表类型.
我的第一次尝试是这样的:
<asp:Repeater ID="searchResultsRepeater" runat="server">
<ItemTemplate>
<div class="item">
<% switch (DataBinder.Eval(Container.DataItem, "type")) { %>
<% case ResultListingType.CONTACT: %>
<p><%# DataBinder.Eval(Container.DataItem, "firstName") %></p>
<p><%# DataBinder.Eval(Container.DataItem, "lastName") %></p>
<% break; %>
<% case ResultListingType.NEWS: %>
<p><%# DataBinder.Eval(Container.DataItem, "newsHeadline") %></p>
<p><%# DataBinder.Eval(Container.DataItem, "newsDate") %></p>
<% break; %>
<% …Run Code Online (Sandbox Code Playgroud) 我有一个片段,它有自己的状态(选定的按钮等).屏幕旋转时该状态丢失.
包含片段的活动在/ res/layout /中具有纵向布局,在/ res/layout-land /中具有几乎相同的横向布局.两种布局都包含这样的片段:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<fragment
android:id="@+id/testFragment"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
class="au.com.x.y.TestFragment" />
...</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
我一直在测试的片段类是:
public class TestFragment extends android.support.v4.app.Fragment {
private static final String TAG = "TestFragment";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i(TAG, "onCreate(): " +
(savedInstanceState != null ? "NOT NULL" : "NULL"));
}
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Log.i(TAG, "onActivityCreated(): " +
(savedInstanceState != null ? "NOT NULL" : "NULL"));
}
public void onSaveInstanceState(Bundle state) {
super.onSaveInstanceState(state);
Log.i(TAG, "onSaveInstanceState()");
state.putString("saved_thing", "some_value");
} …Run Code Online (Sandbox Code Playgroud) 我有一个名为"greenhighlight"的主题 - 这个主题是使用Android Action Bar Style Generator生成的,并且继承自默认的ActionBarSherlock主题.除了将ActionBar底部的突出显示从蓝色更改为绿色外,该主题不执行任何操作.
为了主题我的所有活动,我只是这样做:
<application android:theme="@style/Theme.greenhighlight"...
Run Code Online (Sandbox Code Playgroud)
这非常适合活动(请注意ActionBar底部的绿色突出显示):

但是,我难以将对话框与我的活动相匹配:


我的"greenhighlight_Dialog"主题定义为:
<style name="greenhighlight_Dialog" parent="@style/Theme.Sherlock.Dialog">
<item name="android:progressBarStyleHorizontal">
@style/greenhighlight_ProgressBar
</item>
</style>
Run Code Online (Sandbox Code Playgroud)
我将继承默认的Sherlock对话框主题,并使用我生成的"greenhighlight"主题定义的进度条样式覆盖进度条 - 您可以在上面的屏幕截图中看到进度条是正确的绿色阴影.
要使用主题,我运行以下代码:
ContextThemeWrapper ctw =
new ContextThemeWrapper(this, R.style.greenhighlight_Dialog);
AlertDialog.Builder builder = new AlertDialog.Builder(ctw);
...
ProgressDialog pd = new ProgressDialog(this, R.style.greenhighlight_Dialog);
...
Run Code Online (Sandbox Code Playgroud)
我的问题是我不知道我需要覆盖哪些属性.我一直在寻找Styles和Themes doco 推荐的styles.xml和themes.xml(它注意到"R.style引用,但是没有很好地记录并且没有完整地描述样式") - 但是那里在Theme.Dialog上定义了很多样式,我不确定我需要覆盖哪些样式才能获得我想要的更改.
我需要覆盖哪些属性才能使我的对话框具有绿色标题文本,标题下方的绿色高亮条以及选中列表项的绿色复选标记?
我有一个AsyncTask来处理一个相当长时间运行的更新过程,我想要一个进度对话框,按顺序显示:
我在确定(进度条显示)和不确定(没有进度条)之间切换进度对话框时遇到问题.
我的AsyncTask中的代码如下:
private final ProgressDialog progressDialog;
public SynchronizeTask(Activity activity)
{
progressDialog = new ProgressDialog(activity);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
}
protected void onPreExecute() {
progressDialog.setMessage("Starting update...");
progressDialog.setCancelable(false);
progressDialog.show();
}
...lots of code here...
// all of these are set from doInBackground()
private String progressMsg;
private int progressTotal;
private int progressProgress;
protected void onProgressUpdate(Void... values) {
progressDialog.setMessage(progressMsg);
if (progressTotal > 0) {
progressDialog.setIndeterminate(false);
progressDialog.setMax(progressTotal);
progressDialog.setProgress(progressProgress);
} else {
progressDialog.setIndeterminate(true);
progressDialog.setMax(0);
progressDialog.setProgress(0);
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试切换确定setIndeterminate()- 这里的问题是进度对话框在对话框的底部显示"NaN"和"0%",即使在不确定模式中没有留下"条形". …
这更像是一个HTTP规范问题,而不是Sitecore问题.
我在Sitecore中设置了404错误页面:
<setting name="ItemNotFoundUrl" value="/404.aspx" />
Run Code Online (Sandbox Code Playgroud)
因此,当用户访问不存在的页面(例如www.example.com/xyz)时,他们会被重定向到我的自定义404页面(例如www.example.com/404.aspx).
Sitecore使用302执行重定向,如下面的Firebug屏幕截图所示:

这是一个问题吗?即Google和其他搜索引擎会将我的404页面编入网址www.example.com/xyz吗?有问题的网站最初设置为从404页面返回"200 OK"响应(不好!),因此搜索引擎一旦找到网站的链接断开,就会将网站编入索引404页面.
我假设因为302只是一个重定向,所以最终(自定义404)URL的状态代码将是任何客户端应该假定应用于初始(重定向)URL的状态代码.
如果这不是问题,那么规范的规范/文档是什么呢?
http sitecore sitecore6 http-status-code-404 http-status-code-302
我有一个包含大量元数据字段的模式.我们希望能够通过Tridion API从代理中搜索基于该模式的组件,如:
using Tridion.ContentDelivery.DynamicContent.Query;
private static Criteria getSearchCriteria(
string searchText,
params BrokerConstants.MetadataField[] fields)
var searchCriteria = new List<Criteria>();
foreach (var f in fields)
{
var mkcText = new CustomMetaKeyCriteria(f.Name);
var mvcText = new CustomMetaValueCriteria(
mkcText,
"%" + searchText + "%",
Criteria.Like);
searchCriteria.Add(mvcText);
}
return new OrCriteria(searchCriteria.ToArray());
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,此工作正常:用户可以键入一些搜索文本,我们通过代理API将搜索文本传递给Tridion,Tridion会将返回与搜索文本匹配的组件.
但!如果我在任何组件的内容字段中添加了大量文本,则Tridion发布过程将在"部署"阶段失败:
阶段:部署处理阶段失败,无法部署组件[Component id = tcm:9-2617-16 title = xyz schema = tcm:9-2325-8],CustomMeta字段,StringValue,大于支持的3400字节大小!
我尝试将代理数据库的CUSTOM_META表中的KEY_STRING_VALUE列从nvarchar(3400)更改为nvarchar(MAX),但这似乎没有解决问题.
我完全没有超出限制:"wc"告诉我文本中有4037个字节.大约6000左右听起来像是我需要的舒适上限.
是否有一种简单的方法来增加此字段中允许的文本字节数?
我有3个用户控件,每个用户控件都需要根据各种URL参数等从XML提要中提取数据.现在,此XML Feed中的数据对于所有3个用户控件都是相同的,因为它们都发送相同的请求.
对于相同的数据做出3个单独的请求似乎很愚蠢.
我的想法是有一个我将调用的单例,它将向XML服务发出一个请求,然后将精确解析的结果呈现给用户控件.
即:
现在我考虑一下,我需要为"make a request"方法添加一些阻塞,这样我就不会多次同时调用它 - 我对C#很新,最简单的方法是什么做这个?用户控件是否同时运行?这个地方有一个很好的概述吗?
问题是"在C#中的页面请求之间是否会重新实现单例?",但我想一个更普遍的问题是"我做的很傻","最好的方法是什么?" 或"有更简单的方法来做我想要的吗?".
我的应用程序允许用户使用他们的设备相机应用程序拍摄照片,这些照片应用程序将保存到特定应用程
然后,用户可以选择将他们选择的任何图像发送到他们的某个联系人,使用他们选择的设备电子邮件应用.

可悲的是,"选择要发送的图像"对话框最初需要很长时间才能加载,并且在滚动时非常"不稳定"(频繁显着的暂停).我怀疑这是因为图像非常大 - 用我的相机拍摄的照片大约是每个2.3MB.因此,初始屏幕(显示15个图像)需要在磁盘可以渲染之前将其拉出34.5MB左右.
<!-- ... -->
<GridView
android:id="@+id/gvSelectImage"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:numColumns="3"
android:gravity="center" />
<!-- ... -->
Run Code Online (Sandbox Code Playgroud)
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
File pic = pics[position];
View checkedImageView =
LayoutInflater.from(context).inflate(R.layout.checked_image,
parent, false);
final ImageView imageView =
(ImageView) checkedImageView.findViewById(R.id.checkableImage);
/* LOAD IMAGE TO DISPLAY */
//imageView.setImageURI(pic.toURI())); // "exceeds VM budget"
Bitmap image;
try {
int imageWidth = 100;
image = getBitmapFromFile(pic, imageWidth); // TODO: slooow...
} catch (IOException e) { …Run Code Online (Sandbox Code Playgroud) android ×5
asp.net ×2
c# ×2
http ×1
performance ×1
sitecore ×1
sitecore6 ×1
sql ×1
sql-server ×1
tridion ×1
tridion-2011 ×1