小编Har*_*dik的帖子

在SQLite + BEGIN TRANSACTION中更快地更新

这个也与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)

在上面的逻辑castarraylistArraylist其中包含的值需要加工成数据库.

当我检查上面的代码时,在1分钟内更新大约400条记录.

有什么方法可以提高性能吗?

NOTE ::(文件数据库不是线程安全的)

2.开始交易

假设我想在Spatialite中使用单个事务运行两个(或数百万个)更新语句..是否可能?

我在线阅读并为我准备以下声明(但没有获得成功)

BEGIN TRANSACTION;
UPDATE builtuparea_luxbel SET ADMIN_LEVEL = 6 …
Run Code Online (Sandbox Code Playgroud)

c# sql sqlite spatialite

7
推荐指数
2
解决办法
2万
查看次数

Winforms线程应用程序挂起(后台工作线程)

我使用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)

我不明白我做错了.为什么该计划挂起?

c# multithreading winforms

2
推荐指数
1
解决办法
1290
查看次数

根据操作系统编号

我正在使用.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)

c# formatting decimal

0
推荐指数
1
解决办法
66
查看次数

多线程+ C#+性能+ SQLite

我有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分钟.

我的目标是减少查询的处理时间.

c# sqlite multithreading

0
推荐指数
1
解决办法
636
查看次数

标签 统计

c# ×4

multithreading ×2

sqlite ×2

decimal ×1

formatting ×1

spatialite ×1

sql ×1

winforms ×1