.net 连接池

我不明白常规连接和连接池之间的语法差异是什么。 当我使用using关键例如: using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); command.ExecuteNonQuery(); } 这是连接池的执行方式吗? 答案 您可以阅读有关连接池的内容这里。 基本上,只要连接字符串相同(包括大小写),连接就会从同一个连接池中获取。 来自: stackoverflow.com

.NET-如何从数据集中检索特定项目?

我有以下代码,该代码连接到数据库并将数据存储到数据集中。 我现在需要做的是从数据集中获取一个值(实际上它的两个第一个第4和5列) OdbcConnection conn = new OdbcConnection(); conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString2"].ConnectionString; DataSet ds = new DataSet(); OdbcDataAdapter da = new OdbcDataAdapter("SELECT * FROM MTD_FIGURE_VIEW1", conn); da.Fill(ds) 因此,我需要获取两个特定的项目并将它们存储到ints中,伪代码将是 int var1 = ds.row1.column4 int var2 = ds.row1.column5 关于我该怎么做的任何想法? 另外,一些人也可以阐明数据表,因为这可能与我要做的方式有关。 答案 你可以喜欢… 如果您想访问ColumnName Int32 First = Convert.ToInt32(ds.Tables[0].Rows[0]["column4Name"].ToString()); Int32 Second = Convert.ToInt32(ds.Tables[0].Rows[0]["column5Name"].ToString()); 或者,如果您想访问Index Int32 First = Convert.ToInt32(ds.Tables[0].Rows[0][4].ToString()); Int32 Second = Convert.ToInt32(ds.Tables[0].Rows[0][5].ToString()); 来自: stackoverflow.com

ado.net | datadirectory |这个记录在哪里?

在AppConfig中可以使用|DataDirectory|但是我找不到任何文档吗? 答案 |DataDirectory|是一个替换字符串,因此您可以分别配置数据库文件的位置。 因此,而不是: SqlConnection c = new SqlConnection ( @"Data Source=.\SQLDB; AttachDbFilename=C:\MyDB\Database.mdf;Initial Catalog=Master"); 您做以下操作: // Set |DataDirectory| value AppDomain.CurrentDomain.SetData("DataDirectory", "C:\myDB"); // SQL Connection String with |DataDirectory| substitution string SqlConnection c = new SqlConnection ( @"Data Source=.\SQLDB; AttachDbFilename=|DataDirectory|\Database.mdf;Initial Catalog=Master"); 来自: stackoverflow.com

Base64 字符串抛出无效字符错误

我不断收到 Base64 无效字符错误,尽管我不应该这样做。 该程序获取 XML 文件并将其导出到文档中。 当将文档重新加载到程序中时,我必须检查它是否压缩,代码很简单: byte[] gzBuffer = System.Convert.FromBase64String(text); return "1F-8B-08" == BitConverter.ToString(new List<Byte>(gzBuffer).GetRange(4, 3).ToArray()); 它检查字符串的开头以查看其中是否包含 GZips 代码。 现在的问题是,我所有的测试都有效。 测试将通过,但使用完全相同的字符串代码将失败? 关于我做错了什么有什么想法吗? 答案 你说 该字符串正是写入文件的内容(在末尾添加了"\0",但我认为这没有任何作用)。 事实上,它确实做了一些事情(它导致你的代码抛出一个FormatException:“Base-64 字符串中的无效字符”)因为Convert.FromBase64String不认为"\0"是有效的 Base64 字符。 byte[] data1 = Convert.FromBase64String("AAAA\0"); // Throws exception byte[] data2 = Convert.FromBase64String("AAAA"); // Works Solution: Get rid of the zero termination. (也许打电话.Trim("\0")) Notes: 这MSDN 文档用于Convert.FromBase64String说它会抛出一个FormatException什么时候 忽略空白字符,s 的长度不是零或 4 的倍数。 -或者- s 的格式无效。 然后 从 0 开始按升序排列的 64 个基数是大写字符"A"到"Z"、小写字符"a"到"z"、数字"0"到"9"以及符号" “和”/"。 来自: stackoverflow.com

C

我有一个 Microsoft SQL Server 数据库,其中包含以下数据字段BIT类型。 该字段将有0或者1值来表示 false 和 true。 我希望当我检索数据时将我得到的值转换为false或者true不使用 if 条件将数据转换为false如果是0或者true如果是1。 我在想如果有一个函数C 答案 这取决于您如何执行 SQL 查询。数据读取器你可以直接读取一个布尔值: using (var conn = new SqlConnection(ConnectionString)) using (var cmd = conn.CreateCommand()) { conn.Open(); cmd.CommandText = "SELECT isset_field FROM sometable"; using (var reader = cmd.ExecuteReader()) { while (reader.Read()) { bool isSet = reader.GetBoolean(0); } } } 来自: stackoverflow.com

c# Using Parameters.AddWithValue in SqlDataAdapter

如何将Parameters.AddWithValue 与SqlDataAdapter 一起使用。 var da = new SqlDataAdapter("SELECT * FROM annotations WHERE annotation LIKE '%"+txtSearch.Text+"%'", _mssqlCon.connection); var dt = new DataTable(); da.Fill(dt); 我像这样重写了代码: SqlDataAdapter da; da = new SqlDataAdapter("SELECT * FROM annotations WHERE annotation LIKE '%@search%'", _mssqlCon.connection); da.SelectCommand.Parameters.AddWithValue("@search",txtSearch.Text); var dt = new DataTable(); da.Fill(dt); 但它失败了。 答案 用于初始化的字符串SqlDataAdapter 成为CommandText的选择命令SqlDataAdapter 的属性。 您可以使用此代码向该命令添加参数 da = new SqlDataAdapter("SELECT * FROM annotations WHERE annotation LIKE @search", _mssqlCon.connection); da.SelectCommand.Parameters.AddWithValue("@search","%" + txtSearch.Text + "%"); 首先,删除参数占位符周围的单引号。 二、直接在AddWithValue的Value参数中添加通配符 您已要求使用AddWithValue,但请记住,虽然这是一个有用的快捷方式,但也有许多缺点,并且都有详细记录。...

dataadapter.fill(数据集)

我试图通过oledb从访问数据库中获取一些数据DataSet。但是DataSet在Fill()方法。当我在D*中手动触发它们时,同一语句可以返回1行。 OleDbConnection connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Inventar.accdb"); DataSet1 DS = new DataSet1(); connection.Open(); OleDbDataAdapter DBAdapter = new OleDbDataAdapter( @"SELECT tbl_Computer.*, tbl_Besitzer.* FROM tbl_Computer INNER JOIN tbl_Besitzer ON tbl_Computer.FK_Benutzer = tbl_Besitzer.ID WHERE (((tbl_Besitzer.Vorname)='ma'));", connection); DBAdapter.Fill(DS); 提前致谢。 新的工作代码: DataSet ds = new DataSet(); OleDbDataAdapter DBAdapter = new OleDbDataAdapter(); OleDbConnection connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Inventar.accdb"); string query = @" SELECT tbl_Computer.*, tbl_Besitzer.* FROM tbl_Computer INNER JOIN tbl_Besitzer ON tbl_Computer.FK_Benutzer = tbl_Besitzer.ID WHERE (((tbl_Besitzer.Vorname)='ma'));"; connection....

DataView.RowFilter 与 DataTable.Select() 与 DataTable.Rows.Find()

考虑下面的代码: Dataview someView = new DataView(sometable) someView.RowFilter = someFilter; if(someView.count > 0) { .... } 很多文章都说Datatable.Select()比使用DataViews更好,但这些都是在VS2008之前的。 已解决:DataView 在处理大型记录集时性能不佳之谜 DataRecord 数组与 DataView:性能上的巨大差异 谷歌搜索这个主题,我发现一些文章/论坛主题提到 Datatable.Select() 本身是相当有缺陷的(不确定这一点)并且在各种情况下表现不佳。 对此(最佳实践ado.net)msdn 上的主题建议如果数据表上定义了主键,则应使用 findrows() 或 find() 方法而不是 Datatable.Select()。 本文在这里(.NET 1.1)基准所有三种方法以及另外几个方法。但这是针对版本1.1版本,因此不确定现在是否有效。对此dataRowcollection.find()的累积优于所有方法,而datatable.select()优于dataview.rowfilter。 因此,我对在数据表中找到行的最佳方法感到非常困惑。还是没有一个好方法可以做到这一点,具体取决于场景,存在多种解决方案? 答案 您正在寻找"在数据表中查找行的最佳方法",所以我首先不得不问:“最佳”?我认为,任何技术都具有比其他技术更合适的方案。 首先,让我们看一下DataView.RowFilter:数据范围在数据绑定中具有一些优势。它非常面向视图,因此具有强大的排序,过滤或搜索功能,但可以创建一些开销,并且未针对性能进行优化。我会选择DataView.RowFilter对于较小的记录集和/或您利用其他功能的位置(例如,直接数据绑定到视图)。 您可以在较旧的帖子中阅读的数据维图的大多数事实仍然适用。 第二,你应该喜欢DataTable.Rows.Find超过DataTable.Select如果你只想一次点击。 DataTable.Select较慢,但是如果您有多个标准并且不关心索引或未索引行:它基本上可以找到所有内容,但没有针对性能进行优化。本质上,DataTable.Select必须走整个桌子,并将每个记录与您传递的标准进行比较。 希望您发现这个小概述对您有所帮助。 我建议看看**this article**,对于我的表演问题,这对我很有帮助。这篇文章包含一些引号。 A little UPDATE: 顺便说一句,这似乎有点不符合您的问题的范围,但是它几乎总是在后端进行过滤和搜索的最快解决方案。如果您想要简单并有一个SQL Server作为后端和.net3+在客户端上,请前往linq to-sql。搜索LINQ对象非常舒适,并创建在服务器端执行的查询。虽然LINQ对象也是一种非常舒适但也是较慢的技术。如果您还不知道。 来自: stackoverflow.com

Exception when AddWithValue parameter is NULL

我有以下代码用于指定SQL查询的参数。当我使用时,我会以下例外Code 1;但是当我使用时工作正常Code 2。在Code 2我们对空的支票进行检查,因此if..else堵塞。 Exception: 参数化查询’(@application_ex_id nvarchar(4000))选择e.application_ex_id a’期望参数’@application_ex_id’,该参数未提供。 Code 1: command.Parameters.AddWithValue("@application_ex_id", logSearch.LogID); Code 2: if (logSearch.LogID != null) { command.Parameters.AddWithValue("@application_ex_id", logSearch.LogID); } else { command.Parameters.AddWithValue("@application_ex_id", DBNull.Value ); } QUESTION 您能解释一下为什么它无法从logSearch.logid值中获取代码1中的null(但能够接受dbnull)? 是否有更好的代码来处理此问题? Reference: 将null分配给SQLPARAMETER 返回的数据类型根据表中的数据而变化 数据库SmallInt转换错误到C#无效INT dbnull的意义是什么? 代码 public Collection<Log> GetLogs(LogSearch logSearch) { Collection<Log> logs = new Collection<Log>(); using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); string commandText = @"SELECT * FROM Application_Ex E WHERE (E.application_ex_id = @application_ex_id OR @application_ex_id IS NULL)"; using (SqlCommand command = new SqlCommand(commandText, connection)) { command....

ExecutenOnquery要求该命令在我的代码中具有事务错误

我在以下错误上cmd.ExecuteNonQuery。 " ExecuteNonquery要求命令在分配给命令的连接处于待处理的本地事务中时必须进行交易。命令的交易属性尚未初始化。" 这是我的代码: //if (hdRefresh.Value.Length > done.Value.Length || done.Value == "1") //{ // //Write Your Add Customer Code here > Response.Write("true") // done.Value = hdRefresh.Value; //} //else //{ // Response.Redirect("~/Cashier/BTBill.aspx"); // return; //} if (IsClosedToDay()) { ScriptManager.RegisterClientScriptBlock(Page, typeof(Page), "Warning", "<script>alert('Day Closing has been Performed ')</script>", false); return; } DateTime dateFeomDB = getdate(); // by atizaz if (HDD.Value == "" || HDD.Value == null) { ScriptManager.RegisterClientScriptBlock(Page, typeof(Page), "Warning", "<script>alert('No Transaction Found')</script>", false); return; } // SqlConnection scon = new SqlConnection(ConfigurationManager....

executeScalar,executereader和executeNonquery有什么区别?

当我们使用这三个情况时,有什么不同的情况?我应该在哪里使用一个,我不应该在哪里? 答案 ExecuteScalar通常在查询返回单个值时使用。如果返回更多,则结果是第一行的第一列。一个例子可能是SELECT @@IDENTITY AS 'Identity'。 ExecuteReader用于具有多个行/列的任何结果集(例如,SELECT col1, col2 from sometable)。 ExecuteNonQuery通常用于没有结果的SQL语句(例如,更新,插入等)。 来自: stackoverflow.com

foreach 语句无法对“getenumerator”的公共定义类型的变量进行操作

Task03Entities.Entites entities = new Task03Entities.Entites(); // Creat a object for my entites class Task03BAL.BAL bal = new Task03BAL.BAL(); // creat a object of BAL to call Get Data Method List<Task03Entities.Entites> entitiesList = new List<Task03Entities.Entites>(); // make a list of class Entities entitiesList = bal.GetData(entities); // store data in list ViewState.Add("Products", entitiesList.ToArray()); // use view state to store entitieslist Task03Entities.Entites[] entitiesArray =(Task03Entities.Entites[])ViewState["Products"]; List<Task03Entities.Entites> ViewStateList =new List<Task03Entities.Entites(entitiesArray); // so now ViewStateList contain entitieslist data // Now the Problem which i am facing is if (Request....

Handling 'Sequence has no elements' Exception

我正在更新购物车中的数量,但是抛出序列没有任何元素的例外。 我什至不知道这意味着什么。 序列不包含元素描述:执行当前Web请求期间发生了一个未经治疗的异常。请查看堆栈跟踪,以获取有关该错误以及代码中何处的更多信息。 Exception Details: System.InvalidOperationException: Sequence contains no elements 源错误: 第35行:var uid = websecurity.currentuserid;第36行:var newqty = request.form [" ventity"];第37行: OModel。 物品的地方。 有什么想法可能导致这种情况吗? 答案 First()如果您的选择返回 0 行,则会导致此问题。FirstOrDefault()如果没有元素,则返回 null。 来自: stackoverflow.com

MetadataException: Unable to load the specified metadata resource

突然我不断得到MetadataException实例化我的生成ObjectContext班级。App.Config中的连接字符串看起来正确 - 自上次工作以来就没有更改 - 我尝试从基础数据库中再生一个新模型(EDMX -File)而没有更改。 有人有主意吗? 更多详细信息:我没有更改任何属性,我没有更改任何输出组件的名称,也没有尝试将EDMX嵌入组件中。我只等了10个小时,直到我回来。然后它不再起作用了。 我尝试重新创建EDMX。我尝试重新创建项目。我什至尝试从头开始重新创建数据库。没有运气,无论如何。 答案 这意味着该应用程序无法加载EDMX。有几件事可能引起这一点。 您可能已经将模型的元数据属性属性更改为复制到输出目录。 连接字符串可能是错误的。我知道您说您没有更改它,但是如果您更改了其他事情(例如,组装的名称),那仍然是错误的。 您可能正在使用库后任务将EDMX嵌入组装中,而该汇编任务不再出于某种原因而不再起作用。 简而言之,您的问题中没有足够的细节来给出准确的答案,但是希望这些想法应该使您走上正确的轨道。 Update: 我写了一篇博客文章,具有更完整的步骤进行故障排除。 来自: stackoverflow.com

Microsoft.ace.oledb.12.0未注册

我有一个带有两个项目的Visual Studio 2008解决方案(一个单词模板项目和一个用于测试的VB.NET控制台应用程序)。这两个项目都引用一个数据库项目,该项目打开了与MS-ACCESS 2007数据库文件的连接,并引用了System.data.oledb。在数据库项目中,我有一个函数,可检索数据表 private class AdminDatabase ' stores the connection string which is set in the New() method dim strAdminConnection as string public sub New() ... adminName = dlgopen.FileName conAdminDB = New OleDbConnection conAdminDB.ConnectionString = "Data Source='" + adminName + "';" + _ "Provider=Microsoft.ACE.OLEDB.12.0" ' store the connection string in strAdminConnection strAdminConnection = conAdminDB.ConnectionString.ToString() My.Settings.SetUserOverride("AdminConnectionString", strAdminConnection) ... End Sub ' retrieves data from the database Public Function getDataTable(ByVal sqlStatement As String) As DataTable Dim ds As New DataSet Dim dt As New DataTable Dim da As New OleDbDataAdapter Dim localCon As New OleDbConnection localCon....