Tag: SQL服务器

包含IN 参数的SqlCommand问题

显然,以下代码不会按预期打印任何内容。我确信这是因为我试图将项目列表放入@namelist 。 显然,它不仅仅是文本替代品。 我怎么解决这个问题? 谢谢 using (var connection = new SqlConnection(_connectionString)) { connection.Open(); using (var cmd = connection.CreateCommand()) { cmd.CommandText = @”select column_name, table_name from information_schema.columns where table_name in (@namelist)”; cmd.Parameters.AddWithValue(“@namelist”, “‘tableOne’, ‘tableTwo'”); var reader = cmd.ExecuteReader(); while (reader.Read()) { var a = reader[0]; Console.WriteLine(a); } } }

如何从一列插入多行

我想在一列中插入多行。 对于我这样的POS系统。 表A : Transaction ID| Item Code|Qty|Total|Transaction Date| —————————————————– 00001 | Item 1 |3 |100 |12/07/2014 | 00001 | Item 2 |2 |50 |12/07/2014 | 00001 | Item 3 |1 |150 |12/07/2014 | 之后我想在我的桌子上看到这个 Transaction ID|Item Code |Total of Qty|Total of Price|Transaction Date| ———————————————————————————– 00001 |Item 1, Item 2, Item 3| 6 | 150 […]

参数化动态sql查询

我有一个关键字列表,我存储在列表中。 要从表中获取记录,请使用以下查询: sqlBuilder.Append(“SELECT name, memberid FROM members WHERE”); StringBuilder sqlBuilder = new StringBuilder(); foreach (string item in keywords) { sqlBuilder.AppendFormat(” LOWER(Name) LIKE ‘%{0}%’ AND”, item); } string sql = sqlBuilder.ToString(); 您可能已经注意到,我的查询容易受到sql注入,因此我想使用SqlCommand()来使用参数。 我尝试了以下但仍然无法正常工作: foreach (string item in keywords) { sqlBuilder.AppendFormat(” LOWER(Name) LIKE ‘%’ + @searchitem + ‘%’ AND”, item); SqlCommand cmd = new SqlCommand(sqlBuilder.ToString()); cmd.Parameters.AddWithValue(“@searchitem”,item); } […]

如何将带有(’)的字符串插入sql数据库?

我的字符串由(’)引用标记组成,如“母亲的爱”…… 从c#通过sql查询插入数据时。 它显示错误。 如何纠正问题并成功插入此类数据? string str2 = “Insert into tblDesEmpOthDetails (EmpID, Interviewnotes) values (‘” + EmpId + “‘,'” + Interviewnotes + “‘)”; 面试笔记的内容包括“母亲的爱”(单引号)。 执行此查询时,它将错误显示为“字符串后的未闭合引号”)“如何插入此类型的字符串?

如何使用C#为sql server的表添加列?

如何使用C#为sql server的表添加列? 例如,我想在C#代码中执行以下sql: alter table [Product] add [ProductId] int default 0 NOT NULL

在SQL Server中插入100万行的最快方法

我正在编写一个存储过程来将行插入表中。 问题是,在某些操作中,我们可能希望插入超过100万行,并且我们希望快速实现。 另一件事是在其中一个列中,它是Nvarchar(MAX) 。 我们可能希望在此列中放置平均1000个字符。 首先,我写了一个prc来逐行插入。 然后我生成一些随机数据用于插入, NVARCHAR(MAX) 1000个字符的字符串。 然后使用循环调用prc来插入行。 如果我使用SQL服务器登录要插入的数据库服务器,则perf非常糟糕,需要48分钟。 如果我使用C#连接到我桌面上的服务器(这是我们通常想做的事情),则需要大约90分钟。 然后,我更改了prc以获取表类型参数作为输入。 我以某种方式准备了行并将它们放在表类型参数中,并通过以下命令执行插入: INSERT INTO tableA SELECT * from @tableTypeParameterB 我尝试批量大小为1000行和3000行(在@tableTypeParameterB中放入1000-3000行以插入一次)。 表现仍然不好。 如果我在SQL服务器中运行它需要大约3分钟来插入100万行,如果我使用C#程序从我的桌面连接则需要大约10分钟。 tableA有一个包含2列的聚簇索引。 我的目标是尽可能快地插入(我的想法目标是在1分钟内)。 有没有办法优化它? 只是一个更新: 我尝试了下面的一些人建议的批量复制插入。 我尝试使用SQLBULKCOPY一次插入1000行和10000行。 插入100万行的性能仍然是10分钟(每行有一个1000字符的列)。 没有性能提升。 还有其他建议吗? 基于评论的更新需要。 数据实际上来自UI。 用户将更改使用UI以批量选择,我们说,一百万行,并将一列从旧值更改为新值。 此操作将在单独的过程中完成。但是,我们需要做的是使中间层服务从UI获取旧值和新值并将其插入表中。 旧值和新值最多可包含4000个字符,平均值为1000个字符。 我认为长字符串旧/新值会降低速度,因为当我将测试数据旧值/新值更改为20-50个字符并且插入非常快时无论使用SQLBulkCopy还是表类型变量

使用C#连接到本地SQL Server数据库

假设我在Visual Studio的App_Data文件夹中创建了一个名为Database1.mdf的SQL Server数据库,其中包含一个名为Names的表。 如何使用C#建立连接以读取表值? 到目前为止,我尝试过这样的事情: SqlConnection conn = new SqlConnection(“Server=localhost;Database=Database1;”); conn.Open(); // create a SqlCommand object for this connection SqlCommand command = conn.CreateCommand(); command.CommandText = “Select * from Names”; 但是我收到一个错误: 未找到数据库/错误连接到数据库

选择查询以从SQL Server获取数据

我试图在我的C#代码中运行SQL Select查询。 但我总是得到-1输出 int result = command.ExecuteNonQuery(); 但是,如果我用于delete或insert工作相同的表… ConnectString也没关系。 请检查以下代码 SqlConnection conn = new SqlConnection(“Data Source=;Initial Catalog=;Persist Security Info=True;User ID=;Password=”); conn.Open(); SqlCommand command = new SqlCommand(“Select id from [table1] where name=@zip”, conn); //command.Parameters.AddWithValue(“@zip”,”india”); int result = command.ExecuteNonQuery(); // result gives the -1 output.. but on insert its 1 using (SqlDataReader reader = command.ExecuteReader()) { // […]

在C#中执行包含GO语句的SQL批处理

我正在尝试构建一个程序,它在批处理中执行sql语句并进行error handling(因此我没有使用SMO)。 问题是GO不是SQL的一部分,当使用.NET执行语句时,它最终会出错(SMO会处理它但不会给出执行失败的任何指示)。 string statements = File.ReadAllText(“c:\\test.sql”); string[] splitted = statements.split(“GO”); 使用上面的行不能解决我的问题,因为GO关键字也可以进入注释(我不想从语句中删除注释)并且注释可以进入/ ** /或者在两个破折号之后 – 例如,我不希望解析以下代码: /* GO */ (ofc我谷歌搜索它,但那里没有解决方案)

需要在C#中获取SQL Server“PRINT”值

我有一个SP将结果打印到SQL Server ,但我需要在C#中使用该值。 现在无法将PRINT更改为SELECT 。 我试过SqlCommand.ExecuteScalar()但是没有用。 有人知道是否有可能在SP中将PRINT命令的值重定向到C# ? 例: CREATE PROCEDURE doXYZ AS BEGIN PRINT ‘XYZ’ END 现在在C#中我需要获得值’XYZ’….任何想法?