Tag: sql

在访问以编程方式创建的数据库之前等待

我正在使用SqlClient在我的程序中创建一个数据库。 该应用程序需要定期创建一个新的数据库,但结构是相同的。 所以我在一个文件中有创建脚本,我一次执行一行。 当我完成后,我只是关闭它,因为应用程序的另一部分(使用SubSonic编写)将操纵新创建的数据库。 我遇到的问题是,即使在成功创建数据库之后,当我去访问它时,我得到一个exception,告诉我登录失败。 一段时间后,此访问成功。 我把它缩小到5秒 – 任何更少的东西导致失败,在5秒它工作正常。 下面的代码certificate了(以一种人为的方式),但它也向我certificate了SubSonic根本没有涉及这个问题。 这是我需要忍受的东西,还是有些东西我做得不对? 我的代码是: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Data; using System.Data.SqlClient; namespace SqlConnTest { class Program { static void Main(string[] args) { var x = new ContentDB(); if (x.IsNew) { x.Dispose(); System.Threading.Thread.Sleep(4500); Console.WriteLine(“Second time around”); x = new ContentDB(); } […]

检查BIT列时从LINQ生成的奇怪SQL

我有以下LINQtoSQL语句 from t1 in __table1 join t2 in __table2 on t1.Id equals t2.OtherTableId where t2.BranchId == branchId && !t1.IsPersonal select t1.Id 这会生成以下SQL SELECT DISTINCT [t0].[Id] FROM [__table1] AS [t0] INNER JOIN [__table2] AS [t1] ON [t0].[Id] = [t1].[OtherTableId] WHERE ([t1].[BranchId] = @p0) AND (NOT ([t0].[IsPersonal] = 1)) 现在我的问题是: (NOT ([t0].[IsPersonal] = 1)) 我怎么能写LINQ来说 [t0].[IsPersonal] = […]

你能在SQL FROM语句中使用SQLParameter吗?

我试图在C#中针对SQL Server数据库创建参数化查询。 码: query = new StringBuilder( “SELECT @fields FROM @tables”); using(SqlConnection connection = new SqlConnection(connection)) { SqlCommand command = new SqlCommand(query.ToString(), connection); command.Parameters.AddWithValue(“@fields”, fields.ToString()); command.Parameters.AddWithValue(“@tables”, tables.ToString()); try { connection.Open(); Int32 rowsAffected = command.ExecuteNonQuery(); Console.WriteLine(“RowsAffected: {0}”, rowsAffected); } catch(Exception ex) { Console.WriteLine(ex.Message); } } 奇怪的部分是失败的消息“必须声明表变量”@ tables \“。但是正如你所看到的,它已被明确定义。 所以我的问题是: 你能传递一个参数来定义FROM语句中的表列表吗? 如果可以,为什么这不起作用?

使用Replace和Length检查避免SQL Not IN

我有一种情况,我必须动态创建我的SQL字符串,我试图尽可能使用参数和sp_executesql,所以我可以重用查询计划。 在进行大量的在线阅读和个人体验时,我发现“NOT IN”和“INNER / LEFT JOIN”是表现缓慢且基本(最左侧)表很大(1.5M行,50列) )。 我也读过,应该避免使用任何类型的函数,因为它会减慢查询速度,所以我想知道哪个更糟糕? 我过去曾经使用过这种解决方法,虽然我不确定这是最好的办法,但是避免在项目列表中使用“NOT IN”时,例如我传入3个字符串的列表例如,使用管道分隔符(仅在元素之间): LEN(@param1) = LEN(REPLACE(@param1, [col], ”)) 代替: [col] NOT IN(‘ABD’, ‘RDF’, ‘TRM’, ‘HYP’, ‘UOE’) …想象一下字符串列表的长度是1到大约80个可能的值,并且这种方法也不能将它自己用于paraterization。 在这个例子中,我可以使用“=”表示NOT IN,我会使用传统的列表技术作为我的IN,或者!=如果这是一个更快,虽然我怀疑它。 这比使用NOT IN快吗? 作为一种可能的第三种选择,如果我知道所有其他可能性(IN可能性,可能是80-95倍更长的列表)并且通过那些可能性,那该怎么办呢? 这将在应用程序的业务层中完成,以便将工作负载从SQL Server中删除。 查询计划重用不是很好的可能性,但如果它在一个大讨厌的查询中刮了一两秒,为什么不是。 我也擅长SQL CLR函数创建。 由于以上是字符串操作,CLRfunction最好吗? 思考? 在此先感谢任何和所有的帮助/建议/等。

entity framework,getutcdate()

我可以使用entity framework中的SQL函数getutcdate()在保存实体对象时在数据库中设置日期字段吗? 关于弗雷迪

使用HTML或C#在GridView中更改列名

关键是我在我的项目中使用了GridView 。 我已经使用SQLConn , SQlDataAdapter和DataSet将值分配给GridView GridView1.DataSource=ds; GridView1.DataBind(); 关键是输出显示了对最终用户不友好的表的列名。 我该怎么改变它?

C#SQL输出到SSMS消息选项卡等文本

我在找到一种方法来获取更新/插入/删除/表创建的结果时遇到了一些麻烦…… 我想在SSMS(SQL Server Management Studio)消息选项卡中看到它(猜测该工具是done_in_proc)。 目前,我可以获得exception,并且我可以捕获在SQL脚本中完成的打印。 我已经尝试过ExecuteScalar,ExecuteReader,ExecuteWithResults并且什么也没得到。 谢谢, 码: public void conn_InfoMessage(object sender, SqlInfoMessageEventArgs e) { foreach (SqlError err in e.Errors) { richTextBoxDeployCopy.AppendText(“Info : “+err.Message + Environment.NewLine); } } public void ExecSQLScript(string Instance, string Database, string SQLScript, string Username, string Password) { if (Application2Deploy == “DUMMY”) { server = “Server”; } else { server = […]

Npgsql / Postgresql:“函数不存在”时出现错误信息

抓住我的头。 有一个类似的问题可能与“函数不存在”有关,但我真的认为它确实 存在并且PostgreSQL函数不存在,但答案似乎并不十分明显。 PostgreSQL 9.5。 我有一个基于Npgsql的成员资格查询,如下所示: using (var conn = new NpgsqlConnection(ConnectionString)) { conn.Open(); using (var comm = new NpgsqlCommand(“get_user_by_username”, conn)) { comm.CommandType = CommandType.StoredProcedure; comm.Parameters.Add(“_user_name”, NpgsqlDbType.Varchar, 250).Value = username; comm.Parameters.Add(“_application_name”, NpgsqlDbType.Varchar, 250).Value = _ApplicationName; comm.Parameters.Add(“_online”, NpgsqlDbType.Boolean).Value = userIsOnline; using (var reader = comm.ExecuteReader()) { return GetUsersFromReader(reader).OfType().FirstOrDefault(); } } } 这个函数存在于我的postgresql数据库中: CREATE OR REPLACE FUNCTION […]

将CSV导入SQL-Server – 性能

我创建了一个小项目,允许用户通过Entity-Framework将CSV文件导入SQL。 主要程序如下: using (TextFieldParser tx = new TextFieldParser(file, Encoding.UTF8)) { tx.TextFieldType = FieldType.Delimited; tx.SetDelimiters(“;”); tx.ReadLine(); //The First Line are the headers, no need while (!tx.EndOfData) { decimal decTmp; int intTmp; string[] fields = tx.ReadFields(); //Convert every field to the appropriate type, tryparse if nullable ReportInfo(“Verarbeite Nummer: ” + fields[(int)ConnectionEvaluationFileField.PhoneNumber].Trim()); Verbindunganalyse con = new Verbindunganalyse(); con.Auswertungszeitraum […]

防止sql注入

有没有办法通过使用存储过程来阻止SQL注入? 我有一个SQL查询 select column name from table where field =’@value’ cmd.parameters.add(‘@value’, value); 我正在使用具有最少权限的参数化查询。 我如何编写一个基本的存储过程来防止SQL注入。 那可能吗?