C# 有没有替代OleDb的方法来提高性能?
我有一台ms sql 2012服务器,我使用此功能添加/记录:C# 有没有替代OleDb的方法来提高性能?,c#,sql-server,winforms,C#,Sql Server,Winforms,我有一台ms sql 2012服务器,我使用此功能添加/记录: static String conString = "Provider=SQLOLEDB;Data Source = " + ecommerceServer + "; Initial Catalog = " + eCommercedbName + "; User Id = " + eCommerceUsername + "; Password = " + eCommercepassword + ";"; public bo
static String conString = "Provider=SQLOLEDB;Data Source = " + ecommerceServer + "; Initial Catalog = " + eCommercedbName + "; User Id = " + eCommerceUsername + "; Password = " + eCommercepassword + ";";
public bool InsertSQL(String query, String Tablename)
{
OleDbConnection conn = new OleDbConnection(conString);
try
{
conn.Open();
OleDbCommand command = new OleDbCommand(query, conn);
int count = command.ExecuteNonQuery();
return (count > 0) ? true : false;
}
catch
{
if (conn.State.ToString() == "Open")
{
conn.Close();
}
}
return false;
}
这个功能相当慢(例如,我对MySQL有类似的执行,它的运行速度要快得多。有没有比OleDb更快的方法?下面的Andrew是一个示例,说明了如何在查询中创建SQL客户端以及执行事务。您可以将此作为一个指南/学习示例,也可以替换变量以适合当前的示例。另请注意e我如何从app.config文件中读取连接字符串如果您不需要事务代码,可以将其删除。但我认为最好使用事务代码
private void SomeMethod()
{
SqlCommand sqlcmd = new SqlCommand();
using (SqlConnection sqlConn = new SqlConnection(ConfigurationSettings.AppSettings["strConnectionString"]))//strConnectionString
{
sqlConn.Open();
sqlcmd.Connection = sqlConn;
SqlTransaction transaction;
// Start a local transaction.
transaction = sqlConn.BeginTransaction("DeleteRecs");
sqlcmd.Transaction = transaction;
sqlcmd.CommandTimeout = 60;
sqlcmd.CommandText = "uf_DeleteWeeks";
sqlcmd.CommandType = System.Data.CommandType.StoredProcedure;
try
{
sqlcmd.ExecuteNonQuery();
sqlcmd.Transaction.Commit();
}
catch (SqlException sqle)
{
try
{
transaction.Rollback("DeleteRecs");
}
catch (Exception ex)
{
}
Console.WriteLine(sqle.Message);
}
}
((IDisposable)sqlcmd).Dispose();
}
如果您关心它的性能,请看一看
举一个例子(在VB.Net中),让您了解所涉及的速度提高。试试看。另外,您希望将连接集中在一起,而不是为每个查询连接。并考虑在using(){}周围应用/包装您的SQLConnection第条将连接字符串输入app.config文件。我将通过一个示例说明您的代码应该是什么样的。另外,不要使用硬编码的SQL命令…避免SQL注入。Andrew这应该足以让您开始使用。如果您有任何问题,请毫不犹豫地询问。如果事情继续缓慢运行,请查看你的问题,还记得@Forcey suggestion,使用连接池继续打开和关闭连接是不好的。他在使用C#…你的答案与你发布的关于OP问题的内容无关。@DJ KRAZE:是的,我知道他在使用C#,这就是我在帖子中提到的原因。但是我的答案怎么不相关呢对于OP的qeustion?他特别询问了关于提高性能的问题。此外,MSDN链接包含C#示例代码,因此我不确定您的观点到底是什么。Bic您的示例似乎没有解决他的问题。也许我在这里遗漏了一些东西,但根据他的问题和您的回答,它似乎不适用于他的初始代码ws..由OP来澄清他的问题是这样的,其他人不会像我一样认为。Bic也有基于代码的InsertSQL,人们不能将他的代码解释为批量插入。与一个名为insert的语句相比。@DJ KRAZE:是的,这是一个公平的观点。根据我的经验,一个insert语句不会导致性能问题。唯一的scenario我能想到的是大量的二进制转储或类似的。所以我假设发布的方法被多次调用。但是你是对的,我没有足够的信息来支持它。也许OP可以在这方面进行扩展。