Tag: sql

以编程方式为数据库中的所有对象生成脚本

对于为使用Microsoft SQL Server的应用程序生成设置的自动安装版本,我目前正在评估是否可以执行以下操作: 我想以编程方式(CMD脚本或C#代码)在可从Microsoft SQL Server Management Studio 2008访问的数据库上执行“ 生成脚本 ”function。 即调用一些代码并将指定数据库的所有对象(表,SP,约束等)作为SQL脚本。 目前,我只需要结构,而不是数据。 问题 :是否有可能实现这一目标?

如何在一定时间后自动删除sql server中的记录

我在我的sql数据库上设置了临时用户帐户,其中存储了我的网站用户的用户名,密码和添加日期。 我最初打算以编程方式删除这些记录,但现在我想知道sql server 2008是否有内置函数,允许记录在一天之后自动删除。 这将解决用户在临时帐户关闭后能够保持登录系统的问题 谢谢

简单示例子查询Linq

T-SQL查询 Select * from dbo.User_Users Where UserID IN (Select UserID from Course_Enrollments) LINQ to Entities替代Above Query var innerquery = from en in Course_Enrollments select en.UserID; var query = from u in User_Users where innerquery.Contains(u.UserID) select u; stackoverflow上有很多复杂的子查询,我只是想看一个简单的子查询如何通过linq完成的例子。这就是我如何做到的,但它不好,因为它向数据库发送了2个查询。

UPSERT进入具有动态表名的表

任何更好的UPSERT进入表的方法,提供: 数据以~1行/秒进行upsert 表名是DYNAMIC,使用传递给它的ObjectID参数生成 以下程序:“ORA-00942:表格或视图不存在” CREATE OR REPLACE PROCEDURE PROCEDURE “SPINSERTDATA” ( pObjectID IN RAW, pDateTime IN TIMESTAMP, pValue IN BINARY_DOUBLE, ) AS BEGIN Declare vQueryInsert VARCHAR2(1000); vQueryUpdate VARCHAR2(1000); vTableName VARCHAR2(30); Begin vTableName := FGETTABLENAME(POBJECTID => pObjectID); vQueryUpdate := ‘UPDATE ‘ || vTableName || ‘ SET “VALUE” = :1’; vQueryInsert := ‘INSERT INTO ‘ || vTableName […]

如何在C#.NET(SQL Server)中正确有效地重用预准备语句?

我看了很多问题,但显然我的SO-fu不能胜任这个任务,所以我在这里。 我正在尝试有效地使用预准备语句,我不仅仅意味着参数化单个语句,而是编译一个语句以便重复使用多次。 我的问题在于参数和重用以及如何正确实现。 一般来说,我遵循这个程序(人为的例子): SqlConnection db = new SqlConnection(…); SqlCommand s = new SqlCommand(“select * from foo where a=@a”, db); s.Parameters.Add(“@a”, SqlDbType.VarChar, 8); s.Prepare(); … s.Parameters[“@a”] = “bozo”; s.Execute(); 超级,有效。 但是,每次运行此查询时,我都不想执行所有这些步骤(或后四个步骤)。 这似乎抵消了准备陈述的整个想法。 在我看来,我只需要更改参数并重新执行,但问题是如何做到这一点? 我尝试了s.Parameters.Clear() ,但这实际上删除了参数本身,而不仅仅是值,所以我基本上需要重新Add参数并重新Prepare ,这似乎也打破了整点。 不用了,谢谢。 在这一点上,我留下了迭代s.Parameters并将它们全部设置为null或其他值。 它是否正确? 不幸的是,在我目前的项目中,我有~15个参数的查询需要执行〜每次运行10,000次。 我可以将这个迭代分流成一个方法但是想知道是否有更好的方法来做到这一点(没有存储过程)。 我目前的解决方法是一个扩展方法, SqlParameterCollection.Nullify ,它将所有参数设置为null,这对我的情况很好。 我只是在执行后运行它。 我发现了一些几乎完全相同但(恕我直言)尚未解答的问题: 准备语句和.NET中的内置连接池 SQLite / C#连接池和准备语句混淆 (Serge非常接近回答!) 我能找到的最佳答案是(1)上面的常识和(2)这个页面: http://msdn.microsoft.com/en-us/magazine/cc163799.aspx

如何使用C#将SQL数据库中的值获取到文本框中?

我正在创建一个预订管理系统,我在尝试从SQL数据库中获取数据并插入到我的应用程序的一组文本框中时遇到问题。 我想在DataGridView中显示单击按钮时的客户详细信息,但是当我单击该按钮时,应用程序会抛出exception,并显示以下错误消息; 没有数据时读取的尝试无效。 我附上了我要查看客户详细信息的屏幕截图 ,以及按钮的代码,最终将在相应的文本框中显示客户详细信息。 任何帮助将不胜感激! SqlConnection sc = new SqlConnection(“Data Source=localhost;Initial Catalog=LoginScreen;Integrated Security=True”); SqlCommand com = new SqlCommand(); com.Connection = sc; sc.Open(); SqlDataReader read = (null); com.CommandText = (“select * from Pending_Tasks”); read = com.ExecuteReader(); CustID.Text = (read[“Customer_ID”].ToString()); CustName.Text = (read[“Customer_Name”].ToString()); Add1.Text = (read[“Address_1”].ToString()); Add2.Text = (read[“Address_2”].ToString()); PostBox.Text = (read[“Postcode”].ToString()); PassBox.Text = (read[“Password”].ToString()); DatBox.Text […]

如何使用LINQ to SQL和C#进行正确的连接

嘿伙计们,我在使用LINQ和C#创建以下SQL语句时遇到问题# select c.IDAddenda, c.Descripcion from CatAddendas c right join EmpresaAddenda e on e.IDAddenda = c.IDAddenda where e.rfc = ‘SUL010720JN8’ order by c.IDAddenda asc 我懂了 public IEnumerable TraeAddendas(string rfc) { DataClasses1DataContext dc = new DataClasses1DataContext(…); return (from adds in dc.EmpresaAddendas cats.IDAddenda into joined where adds.RFC == rfc select adds.CatAddenda); } 这不是正确的加入,所以任何想法?

如何使LINQ执行(SQL)LIKE范围搜索

我非常需要帮助,我一直试图这样做一段时间。 所以我有这个查询: Select name from BlaBlaBla order by case when name like ‘9%’ then 1 end, case when name like ‘8%’ then 1 end, case when name like ‘7%’ then 1 end, case when name like ‘6%’ then 1 end, case when name like ‘5%’ then 1 end, case when name like ‘4%’ then 1 […]

如何在C#中创建NVarchar(max)Sql参数?

我有以下代码使用存储过程拉回DataTable并输入字符串参数@JobNumbers,它是动态创建的作业编号字符串(因此长度未知): using (SqlConnection connection = new SqlConnection(con)) { SqlCommand cmd = new SqlCommand(“dbo.Mystoredprocedure”, connection); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(“@JobNumbers”, SqlDbType.VarChar, 4000); cmd.Parameters[“@JobNumbers”].Value = JobNumber; SqlDataAdapter da = new SqlDataAdapter(cmd); connection.Open(); da.Fill(JobDetails); } 正如您所看到的,我当前将JobNumber参数设置为4000的长度,这应该足以承担大约500个作业号并且应该足够了。 但是,有可能在奇怪的场合需要更多。 所以,我想知道,有没有办法将参数设置为nvarchar(max)的等效sql参数类型? 我已经看过各种类似的问题( 将参数传递给SQLCommand的最佳方法是什么? )但没有具体说明你是否可以(或不能)这样做。 其次,如果我将存储过程中的@JobNumber参数设置为nvarchar(max),甚至需要这样做,因此我可能根本不需要在C#中设置长度? 如果我这样做,这将有潜在的性能问题,如此问题中所建议的在添加SqlCommand参数时何时应该使用“SqlDbType”和“size”? ?

linq to sql startwith performance索引列

我首先使用实体​​代码。 索引列: SourceCatalogId 残 CategoryPath 表中有40 000行, 我的问题是查询需要40s !! var result = DBContext.Set() .Include(x => x.SalesHistories, x => x.SourceCatalog) .Where(p => p.SourceCatalogId == 2) .where(p => p.Disabled == false) .where(x => x.CategoryPath.StartsWith(“MyPath”)) .orderby(x => x.ShortDesignation) .Skip(1) .Take(10) .toList(); SQL通过sql profiler: exec sp_executesql N’SELECT TOP (10) [Project1].[SourceProductId] AS [SourceProductId], [Project1].[SourceSKU] AS [SourceSKU], [Project1].[SourceCatalogId] AS [SourceCatalogId], [Project1].[ManufacturerReference] […]