草庐IT

SQL的多表查询

全部标签

c# - 使用 Entity + LINQ 如何不只是本质上对我的查询进行硬编码?

所以我已经使用Entity+LINQ进行了一段时间的开发,我真的开始想知道最佳实践。我习惯了“如果我需要获取数据,引用一个存储过程”的模型。如果需要,可以即时更改存储过程,并且不需要重新编译代码。我发现我的代码中的查询看起来像这样:ListintList=(fromqueryincontext.DBTablewherequery.ForeignKeyId==fkIdToSearchForselectquery.ID).ToList();我开始想知道那和这之间有什么区别:ListintList=SomeMgrThatDoesSQLExecute.GetResults(string.For

c# - 如何将数据读取器转换为动态查询结果

我有一个View,通常从WebMatrix查询(IEnumerable数据类型)获取查询结果,并将结果显示在表格中:@modelMySite.Models.Entity@foreach(varrowinModel.Data){@foreach(varcolumninrow.Columns){@column:@row[column]}}这是我查询数据库的模型:publicclassEntity{publicdynamicData{get;set;}publicEntity(Stringtable){if(table=="User"||table=="Group){WebMatrix.Da

c# - 如何在简单的 Web 项目中连接到 .mdf(Microsoft SQL Server 数据库文件)?

具体来说,在VS2008中,我想连接到一个数据源,您可以通过右键单击自动生成的App_Data文件夹(一个.mdf“数据库”)来获得该数据源。看起来很简单,一旦您知道如何操作就可以了。 最佳答案 我一直保留的一个很好的资源是connectionstrings.com.当您找不到示例时,查找这些连接字符串真的很方便。特别是thispage适用于您的问题在连接到本地SQLServerExpress实例时附加数据库文件Driver={SQLNativeClient};Server=.\SQLExpress;AttachDbFilename

c# - 在 SQL Server 中反汇编位标志枚举

我在SQLServer数据库中有一个INT列,它存储与位标志枚举相关的值。例如,如果枚举是:[Flags()]publicenumUserType{StandardUser=1,Admin=2,SuperUser=4}那么SQLServer中的列可能包含值5。我需要做的是从另一个表中选择包含有关UserType的额外详细信息的所有行,因此使用值5的示例,我想从ID为1和4的第二个表。有谁知道以这种方式分解数字的巧妙方法-理想情况下,该方法应该在某种程度上递归,因为这是一个非常简化的示例,并且实际的表/枚举要大得多。 最佳答案 获取设

c# - 如何在sql语句中使用字符串变量

我有一个正在获取的WPF应用程序stringsomeone=TextBox.text;我想在下面的查询中使用它query="Select*FromTableWhereTitle=someone"我应该如何在查询中使用变量someone? 最佳答案 你可以这样做query="Select*FromTableWhereTitle="+someone;但这很糟糕,会让你暴露于SQL注入(inject)你应该只使用参数化查询像这样的事情应该让你开始using(varcn=newSqlClient.SqlConnection(yourConn

c# - linq 查询从表中选择评论最多的前 10 个条目

我有两个表“POSTS”和“COMMENTS”。一个帖子可以有很多评论,我希望能够选择评论数量最多的前10个帖子。post_id是评论表中的FK。我正在使用LinqtoSQL。请告诉我如何做到这一点。提前致谢。编辑vartop=(fromqindb.question_tablesfromaindb.answer_tableswhereq.QUEST_ID.Equals(a.ANS_QUEST_ID)orderbyq.QUEST_TEXT.Count()descendingselectnew{QUEST_TEXT=q.QUEST_TEXT}).Take(10);这就是我的linq查询现在

c# - 提取sql连接字符串的属性

这个问题在这里已经有了答案:HowtogetDatabaseNamefromConnectionStringusingSqlConnectionStringBuilder(7个答案)关闭6年前。我想从connectionString(字符串变量)中提取服务器和数据库名称。当我们从DEV移动到STAGE然后再到PROD时,服务器和数据库的名称会发生​​变化。这是一个例子:DataSource=SERVER_XYZ;InitialCatalog=DATABASE_XYZ;UserID=us;Password=passDataSource=SERVER_XYZPQR;InitialCatal

c# - SQL Server 插入、更新、选择的最快方法

我使用SP,这不是SP与代码隐藏“构建您的SQL命令”的问题。我正在为处理许多小事务的后端应用程序寻找一种高吞吐量方法。我将SQLDataReader用于大部分返回,因为forward仅适用于大多数情况。我已经看到它以多种方式完成,并且我自己使用了其中的大部分。定义和接受存储过程参数作为参数本身并使用cmd.Parameters.Add构建的方法(指定或不指定DB值类型和/或长度)将您的SP参数及其值组装到一个数组或哈希表中,然后传递给一个更抽象的方法来解析集合,然后运行​​cmd.Parameters.Add表示表的类,根据需要初始化类,设置表示表字段的公共(public)属性,调用

c# - 避免从 C# 代码在 MSSQL Server 上进行 SQL 注入(inject)的算法?

在C#.net平台上避免SQL注入(inject)的最佳方法是什么。如果有的话,请发布C#实现。 最佳答案 不需要算法-只是不使用字符串连接来构建SQL语句。请改用SqlCommand.Parameters集合。这会执行所有必要的值转义(例如将'替换为'')并确保该命令是安全的,因为其他人(即Microsoft)已经完成了所有测试.例如调用存储过程:using(varconnection=newSqlConnection("..."))using(varcommand=newSqlCommand("MySprocName",conn

c# - .NET 中的多目标

浏览了各种博客,我对“多目标”或并行执行的术语感到很困惑。一些博客说,并行执行意味着一个进程中有两个版本的CLR。其他一些人声称,它就像.net2.0和.net3.0程序集并排执行。我非常失望,因为我不确定谁对谁错。我还在许多博客(如ScottHanselman的博客等)中看到(这很令人困惑),如果目标框架是4.0,.NET4.5的任何功能都将不起作用。我可以同意。但是我不能同意也不能理解这样一个事实,即4.0的一个特性,其bug在4.5中被修复,如果我使用4.5构建它并在4.0中部署它将会隐藏。在这里我不理解“隐藏”这个词,也没有人敢解释它到底是什么意思。这意味着运行时错误?这意味着