Tag: vb.net

根据XmlEnumAttribute名称值检索枚举值

我需要一个Generic函数来根据枚举的XmlEnumAttribute“Name”属性检索枚举的名称或值。 例如,我定义了以下枚举: Public Enum Currency CDN = 1 USA= 2 EUR= 3 JPN= 4 End Enum 第一个Currency枚举值为1; 枚举名称是“CDN”; 并且XMLEnumAttribute Name属性值为“00”。 如果我有枚举值,我可以使用以下通用函数检索XmlEnumAttribute“Name”值: Public Function GetXmlAttrNameFromEnumValue(Of T)(ByVal pEnumVal As T) As String Dim type As Type = pEnumVal.GetType Dim info As FieldInfo = type.GetField([Enum].GetName(GetType(T), pEnumVal)) Dim att As XmlEnumAttribute = CType(info.GetCustomAttributes(GetType(XmlEnumAttribute), False)(0), XmlEnumAttribute) ‘If there is an […]

如何从VB.net(或C#)调用sqlserver函数? 是否有一些像存储过程的语法?

Public Sub cleanTables(ByVal prOKDel As Short) Dim sqlParams(1) As SqlParameter Dim sqlProcName As String sqlProcName = “db.dbo.sp_mySP” sqlParams(1) = New SqlParameter(“@OKDel”, prOKDel) Try dbConn.SetCommandTimeOut(0) dbConn.ExecuteNonQuery(CommandType.StoredProcedure, sqlProcName, sqlParams) Catch ex As Exception Finally End Try End Sub 在那儿 CommandType.StoredProcedure…CommandType.Function sqlParams(1) = New SqlParameter(“@OKDel”, prOKDel)… 最后是datatable dt = dbConn.Execute(CommandType.StoredProcedure,sqlProcName,sqlParams) 谢谢

我应该将什么’length’参数传递给SqlDataReader.GetBytes()

我有一个SqlDataReader,需要使用SqlDataReader.GetBytes()方法从中读取varbinary(max)列。 此方法填充字节数组,因此需要知道要读取的数据长度。 这是我感到困惑的地方。显然我想读取从这行/列中的数据库返回的所有数据,那么我应该通过什么’length’参数? 据我所知,SqlDataReader没有提供任何方法来发现可用的数据长度,因此这种方法对我来说似乎相当尴尬。 我很想在这里传递int.MaxValue而忘记这个问题,但有些事情并不适合我。 我知道我可以打电话 byte[] value = (byte[])dataReader[“columnName”]; ..而这似乎完全在内部处理长度问题。 但是,我正在使用一组围绕SqlDataReader.GetXXXX()方法构建的复杂代码生成模板。 所以我被绑在使用GetBytes并需要了解它的正确用法。

什么时候适合使用generics与inheritance?

使用generics而不是inheritance的情况及其相关的好处,反之亦然,它们应该如何最好地结合起来? 谢谢你的回答。 我将尽力说明这个问题的动机:我有一个如下所示的课程: class InformationReturn where T : Info { InformationReturn(Employee employee, List) { … } } 现在假设我有一个带有InformationReturn参数的存储库,它必须根据Info对象T的类型在数据库中编写不同的字段。 为T类型创建不同的存储库是否更好; 一个使用reflection来确定类型的存储库; 或者是否有更好的方法在generics上使用inheritancefunction? 注意 :其他客户端代码也必须根据T的类型进行不同的操作。

VB.Net和C#之间LINQ语法的差异

只是出于好奇: 在VB.Net中编写了几个项目后,我惊讶地发现C#和VB.NET LINQ用法之间存在一些细微差别。 例如,如果我们想要按多个属性(列)对元素进行分组,我们需要显式创建一个新的匿名类型: var procs = from c in Process.GetProcesses() group c by new {c.BasePriority, c.Id} into d select d; 而在VB.NET中,更直接的语法已经做到了: Dim b = From c In Process.GetProcesses() Group c By c.BasePriority, c.Id Into Group Select Group 因此,人们不需要在这里创建一个带有“new”的类型。 还有什么区别? C#和VB.NET中的LINQ语法有什么好的比较吗?

VB.net中没有增量运算符

我是vb.net的新手并且在将C#中的for循环转换为VB.net时遇到了这个问题我意识到增量运算符在vb.net(++和 – )中不可用,而我能够做到比如cnt +=1 我研究了一下,并发现了同样的埃里克的post ,但真的不能完全理解它。 他提到在VB中,STATEMENT不能仅仅是一种表达。 不确定这是如何真正适合的。 我希望这里的某个人能够解释为什么这不像C#中那样有效。 (希望这也是正确的,因为为什么我们在C#中有==用于比较)

在.NET中使用ScrollBar的DropDown菜单

我正在尝试使用类似于Windows资源管理器中使用的Windows Vista / 7面包屑栏的用户控件。 但是,当我显示包含许多子项的面包屑的下拉菜单时,我会得到一个很长的列表,有时会超出屏幕大小。 但是,在Windows Vista / 7示例中,一次最多显示18个项目,当子项目数超过此数字时,右侧会出现滚动条(18)。 我想知道是否有人知道复制微软的方法。 [也就是说,如何在具有自动滚动function的控件中放置下拉菜单。] 谢谢。 亚历克斯

什么是更新存储过程368次以更新数据库的好方法?

我正在研究一个.NET组件,它从数据库中获取一组数据,对该组数据执行一些业务逻辑,然后通过类似于spUpdateOrderDetailDiscountedItem的存储过程更新数据库中的单个记录。 对于小数据集,这不是问题,但是当我有一个非常大的数据集需要迭代368个存储过程调用来更新数据库中的记录时,我意识到我遇到了问题。 一位高级开发人员查看了我的存储过程代码并说它看起来不错,但现在我想探索一种更好的方法来将“批量”数据发送到数据库。 我有哪些选项可以批量更新数据库? 这可能与存储过程有关吗? 我还有其他选择吗? 我不会选择安装完整的ORM,但任何建议都表示赞赏。 其他背景资料: 我们当前的数据访问模型是在5年前构建的,目前对db的所有调用都是通过模块化/静态函数执行的,其名称类似于ExecQuery和GetDataTable 。 我不确定我是否需要保持在该模型中,但是我必须提供一个非常好的理由来超越我们当前的DAL来获取数据库。 另外值得注意的是,在谈到CRUD操作和数据库时,我还是比较新的。 我更喜欢在.NET代码中玩/工作,但数据必须存储在某个地方,对吧? 存储过程内容: ALTER PROCEDURE [dbo].[spUpdateOrderDetailDiscountedItem] — Add the parameters for the stored procedure here @OrderDetailID decimal = 0, @Discount money = 0, @ExtPrice money = 0, @LineDiscountTypeID int = 0, @OrdersID decimal = 0, @QuantityDiscounted money = 0, @UpdateOrderHeader int = 0, @PromoCode […]

“首选32位”编译器标志对Visual Studio(C#,VB)意味着什么?

刚安装了Visual Studio 11开发人员预览版。 在编译指定了AnyCPU目标的托管(C#,VB)应用程序时,我在项目属性中看到一个名为“Prefer 32-bit”的新选项。 这似乎不是类库的选项,只是顶级应用程序。 这个标志表示什么?

如何将符号(磅,欧元,版权)插入文本框

我知道我可以使用带键盘的Alt键输入符号,但是如何以编程方式将符号(磅,欧元,版权)插入文本框? 我有一个配置屏幕,所以我需要动态创建\ uXXXX。