Tag: sql

validation有效的SQL字符串

是否有一种方法(或现有的库,不一定是内置于.NET中)在C#中执行简单的SQL字符串validation? 场景:构建更新语句以减少SQL负载与单个语句的负载。 如果字符串构建执行“奇怪”的操作,例如以逗号结尾,我希望能够validation字符串是否正确。

使用c#在asp.net中使用Windows身份validation

我试图了解Windows身份validation的工作原理以及如何实现它。 我已阅读了不少文章,并在youtube上观看了一些相当长的video,但我仍然不知道需要添加到我的web.config文件/ index.aspx页面以使其正常工作。 这是index.aspx页面: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.SqlClient; using System.Configuration; using System.Data; namespace asset_management_system { public partial class index1 : System.Web.UI.Page { DataAccessLayer dal = new DataAccessLayer(); protected void Page_Load(object sender, EventArgs e) { } protected void loginBut_Click(object sender, EventArgs e) { string username = […]

禁用该复选框后,不应进行更新

我有两个页面,一个是管理员,另一个是教师。 管理员根据教师分配科目。 学院只想选择所需时间。 我的问题是我不想对禁用的复选框执行更新查询。 我已经尝试了下面的代码,但它也正在更新为禁用复选框。 using (SqlConnection con2 = new SqlConnection(ConfigurationManager.ConnectionStrings [“ConnectionString”].ConnectionString)) { foreach (GridViewRow r in Gv1.Rows){ if (((( (((CheckBox)(Gv1.Rows[r.RowIndex].FindControl(“chkHour1”))).Checked == true || ((CheckBox)(Gv1.Rows[r.RowIndex].FindControl(“chkHour1”))).Checked == false) || (((CheckBox)(Gv1.Rows[r.RowIndex].FindControl(“chkHour2”))).Checked == true || ((CheckBox)(Gv1.Rows[r.RowIndex].FindControl(“chkHour2”))).Checked == false) || (((CheckBox)(Gv1.Rows[r.RowIndex].FindControl(“chkHour3”))).Checked == true || ((CheckBox)(Gv1.Rows[r.RowIndex].FindControl(“chkHour3”))).Checked == false) || (((CheckBox)(Gv1.Rows[r.RowIndex].FindControl(“chkHour4”))).Checked == true || ((CheckBox)(Gv1.Rows[r.RowIndex].FindControl(“chkHour4”))).Checked == false) || (((CheckBox)(Gv1.Rows[r.RowIndex].FindControl(“chkHour5”))).Checked == true […]

使用Microsoft.SqlServer.Dac.DacServices在单用户模式下发布dacpac

我想在单用户模式下发布dac pac,以防止在数据库升级时不必要的数据库更改。 为此,我在Microsoft.SqlServer.Dac.DacServices中使用了Deployfunction。 该函数有一个参数DacDeployOptions选项。 我在该选项中设置了DeployDatabaseInSingleUserMode = true 。 即使它设置为true,我也可以在dacpac部署时执行db操作。 有什么我想念的吗? 或者有没有其他方法来实现这一目标。 帮助将得到赞赏!

是否有一种简单的方法来获取.NET为参数化查询生成的“sp_executesql”查询?

背景: 如果我有以下程序 public class Program { public static void Main() { using(var connection = new SqlConnection(“Server=(local);Database=Testing;Trusted_Connection=True”)) using (var command = connection.CreateCommand()) { connection.Open(); command.CommandText = “UPDATE Foo set Bar = @Text”; command.Parameters.Add(“@Text”, SqlDbType.VarChar, 50).Value = “Hello World!”; command.ExecuteNonQuery(); } } } 执行时,运行以下查询(根据SQL Server Profiler) exec sp_executesql N’UPDATE Foo set Bar = @Text’,N’@Text varchar(50)’,@Text=’Hello World!’ 我的问题: […]

使用Entity Framework加入视图时使用.Include()

我使用索引视图,这是一个没有任何关系的实体(与我的表实体的关系将是更好的,但这似乎几乎不可能实现)。 这个视图由4个FK组成,它们共同形成PK: PortalID CategoryID BranchID CompanyID 现在我加入这个视图来选择一组像这样的公司: var companies = (from c in database.Companies.FindAll().Include(“City”) join l in database.CompanyList.FindAll() on c.ID equals l.CompanyID where l.PortalID == 9 && l.BranchID == 1597 select c).Take(10); 实体公司与表格(城市ID,城市)有关联,我希望包含并完美地运作。 但是,当我加入视图时,.Include()被完全忽略,从而导致查询没有连接到cities表。 正如您可能已经使用存储库模式得出结论而FindAll()返回IQueryable并且我已经手动将Include扩展添加到IQueryable,如下所示: public static IQueryable Include(this IQueryable sequence, string path) { var objectQuery = sequence as ObjectQuery; if (objectQuery != null) return […]

Acess SQL查询缺少更多必需参数

在Web项目中,我正在尝试执行以下查询: SELECT ItemName as Name, ItemPicture as Picture, ItemHeroModif as Assistance, ItemTroopModif as Charisma, HerbCost as Herbs, GemCost as Gems FROM Item WHERE ItemId = @value0 有了断点,我可以看到我附加了@value0的值, 2 。 尽管如此,我收到以下错误: 没有给出一个或多个必需参数的值。 我知道这个错误通常是由于错误的SQL语法而产生的。 我做了什么有什么不对吗? 编辑 : 附件代码: var madeForCommand = “SELECT ItemName as Name,ItemPicture as [Picture],ItemHeroModif as Assistance,ItemTroopModif as Charisma, HerbCost as Herbs, GemCost as Gems […]

将datareader值转换为a到Nullable变量

我试图运行以下代码,但得到一个转换错误。 如何重写我的代码以实现相同的目标? boolResult= (bool?)dataReader[“BOOL_FLAG”] ?? true; intResult= (int?)dataReader[“INT_VALUE”] ?? 0; 谢谢

在使用Fluent Nhibernate Table-Per-Subclass策略时,您能指定标识列吗?

我正在创建一个Fluent N hibernate子类映射,目前看起来像这样: public class TaskDownloadMap: SubclassMap { public TaskDownloadMap() { Table(“TasksDownload”); Map(x => x.ExtraProperty1, “ExtraProperty1”) .Nullable(); Map(x => x.ExtraProperty2, “ExtraProperty2”) .Nullable(); } } 当我尝试保存其中一个实体时,我得到一个例外: Test.TaskRepositoryTest.DeleteTest: NHibernate.Exceptions.GenericADOException : could not insert: [TaskManager.Entities.TaskDownload#269][SQL: INSERT INTO TasksDownload (ExtraProperty1, ExtraProperty2, Task_id) VALUES (?, ?, ?)] —-> System.Data.SqlClient.SqlException : Invalid column name ‘Task_id’. 这是因为我在子类的表上设置的Id列被命名为“TaskId”。 是否有一些覆盖nhibernate试图使用的默认命名方案? 我似乎没有能力在子类中指定“Id”列,我甚至无法找到其他任何人谈论它。 父映射如下所示: public class […]

建议使用Castle ActiveRecord插入许多行并忽略任何欺骗行

我有一个webmethod,它将一堆食谱插入到数据库的队列中(以存储用户有兴趣烹饪的食谱,类似于NetFlix的电影队列)。 用户可以立即检查一堆食谱并排队。 我有类似这样的代码: [WebMethod] public void EnqueueRecipes(SecurityCredentials credentials, Guid[] recipeIds) { DB.User user = new DB.User(credentials); using (new TransactionScope(OnDispose.Commit)) { foreach (Guid rid in recipeIds) { DB.QueuedRecipe qr = new DB.QueuedRecipe(Guid.NewGuid(), user, new DB.Recipe(rid)); qr.Create(); } } } 我对UserId / RecipeId有一个独特的约束,因此用户只能将配方排入一次。 但是,如果他们碰巧选择了已经在队列中的配方,我真的不想用错误消息打扰用户,我只想忽略该配方。 如果违反了唯一约束,上面的代码将抛出SQLexception。 解决这个问题的最佳方法是什么,只需忽略重复的行。 我目前的想法是: 1)首先从数据库加载用户的整个队列,然后首先检查该列表。 如果配方已存在,只需continue执行for循环。 优点:没有不必要的SQL插入发送到数据库。 缺点:较慢,特别是如果用户有一个大队列。 2)不要使用ActiveRecord,而是将整个recipeIds数组传递给SQL函数。 此函数将检查每行是否首先存在。 优点:潜在的速度,让SQL处理所有肮脏的工作。 缺点:打破ActiveRecord模式并需要新的DB代码,这通常难以维护并且实现成本更高。 3)每次循环后CreateAndFlush。 基本上,不要在单个事务中运行整个循环。 […]