这个也与spatilite有关(不仅仅是SQLite)
我有一个文件数据库(xyz.db)我正在使用SQLiteconnection(SQLiteconnection扩展到spatialite).
我有这么多记录需要更新到数据库中.
for (int y = 0; y < castarraylist.Count; y++)
{
string s = Convert.ToString(castarraylist[y]);
string[] h = s.Split(':');
SQLiteCommand sqlqctSQL4 = new SQLiteCommand("UPDATE temp2 SET GEOM = " + h[0] + "WHERE " + dtsqlquery2.Columns[0] + "=" + h[1] + "", con);
sqlqctSQL4.ExecuteNonQuery();
x = x + 1;
}
Run Code Online (Sandbox Code Playgroud)
在上面的逻辑castarraylist是Arraylist其中包含的值需要加工成数据库.
当我检查上面的代码时,在1分钟内更新大约400条记录.
有什么方法可以提高性能吗?
NOTE ::(文件数据库不是线程安全的)
2.开始交易
假设我想在Spatialite中使用单个事务运行两个(或数百万个)更新语句..是否可能?
我在线阅读并为我准备以下声明(但没有获得成功)
BEGIN TRANSACTION;
UPDATE builtuparea_luxbel SET ADMIN_LEVEL = 6 …Run Code Online (Sandbox Code Playgroud) 我使用VS 2010,C#构建应用程序.
我BackgroundWorker在我的申请中使用.
当我点击按钮代码从数据库获取记录并显示到Datagrid.但问题是,当我从代码运行它时工作正常,但当我运行程序.exe所以它正在挂起.
//Declared delegate
delegate void SetControlPropertyThreadSafeDelegate(Control control, string propertyName, object propertyValue);
//Declared method to run control Thread safe
public static void SetControlPropertyThreadSafe(Control control, string propertyName, object propertyValue)
{
if (control.InvokeRequired)
{
control.Invoke(new SetControlPropertyThreadSafeDelegate(SetControlPropertyThreadSafe), new object[] { control, propertyName, propertyValue });
}
else
{
control.GetType().InvokeMember(propertyName, BindingFlags.SetProperty, null, control, new object[] { propertyValue });
}
}
//calling method like below
SetControlPropertyThreadSafe(dataGridView1, "DataSource", dtGrid2);
Run Code Online (Sandbox Code Playgroud)
我不明白我做错了.为什么该计划挂起?
我正在使用.NET 3.5框架和C#我的应用程序将在全球范围内使用.(Windows 7,64位)
我有一个双/浮点数,后来转换成字符串.但是在不同的操作系统上,它正在改变价值,就像46.57变成了46,57
我怎么能阻止这个?.NET可以在内部处理吗?
以下是我的代码;
Decimal lon = Convert.ToDecimal(dt.Rows[j]["lon"]);
Decimal lat = Convert.ToDecimal(dt.Rows[j]["lat"]);
lon = lon / 100000;
lat = lat / 100000;
string longitude = Convert.ToString(lon);
string latitude = Convert.ToString(lat);
Run Code Online (Sandbox Code Playgroud) 我有Windows窗体应用程序.
(C#with visual studio 2010,Framework:4.0)
数据库:.db(文件数据库),通过SQLite连接对象
Thread th = new Thread(() => database(node, xNodetcname, xNodesqlquery1, xNodeHint, e, inXml));
th.Name = thread;
th.Start();
Run Code Online (Sandbox Code Playgroud)
上面的代码创建每个线程并在database()函数上并行处理.
每个线程都有一个SQL Query,用于从数据库中获取数据.
虽然我没有使用多线程,但性能更好,但是当我使用多线程时性能下降.
例:
没有多线程3查询处理时间= 1.5分钟
使用多线程3查询处理时间= 1.9分钟.
我的目标是减少查询的处理时间.