Tag: sql

在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我谷歌搜索它,但那里没有解决方案)

.NET中的SQL注入预防

我通常在.NET中编写我的SQL sql.Append(“SELECT id, code, email FROM mytable WHERE variable = @variable “); 然后做这样的事情: using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[ConfigurationManager.AppSettings[“defaultConnection”]].ConnectionString)) { using (SqlCommand myCommand = new SqlCommand(sql.ToString(), conn)) { myCommand.Parameters.AddWithValue(“@variable”, myVariableName”); … 但是当我得到的数据直接来自数据库时,我是否也应该这样做addParameter? likesql.Append(string.Format(“SELECT group_id, like_text FROM likeTerms ORDER BY group_id ASC “)); DataTable dtLike = SqlHelper.GetDataTable(likesql.ToString()); foreach (DataRow dr in dtLike) { buildsql.Append(“…. varId = […]

需要在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’….任何想法?

SQLBulkCopy或批量插入

我有大约6500个文件,总和大约17 GB的数据,这是我第一次移动我称之为大量数据的东西。 数据位于网络驱动器上,但各个文件相对较小(最大7 MB)。 我正在用C#编写程序,如果我使用BULK INSERT而不是SQLBulkCopy,我想知道是否会注意到性能上的显着差异。 服务器上的表也有一个额外的列,所以如果我使用BULK INSERT,我将不得不使用格式文件,然后为每一行运行UPDATE。 我是新来的论坛,所以如果有更好的方式来问这个问题,请随意提及。

使用SqlFileStream从WCF服务返回流

我有一个WCF服务,用户可以从中请求大型数据文件(存储在启用了FileStream的SQL数据库中)。 这些文件应该流式传输,并且在发送之前不会加载到内存中。 所以我有以下方法应该返回一个由WCF服务调用的流,以便它可以将Stream返回给客户端。 public static Stream GetData(string tableName, string columnName, string primaryKeyName, Guid primaryKey) { string sqlQuery = String.Format( “SELECT {0}.PathName(), GET_FILESTREAM_TRANSACTION_CONTEXT() FROM {1} WHERE {2} = @primaryKey”, columnName, tableName, primaryKeyName); SqlFileStream stream; using (TransactionScope transactionScope = new TransactionScope()) { byte[] serverTransactionContext; string serverPath; using (SqlConnection sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings[“ConnString”].ToString())) { sqlConnection.Open(); using (SqlCommand sqlCommand […]

entity framework使用LEFT JOIN语句为视图返回错误的数据

我遇到了Entity Framework的奇怪行为。 EF生成的DbContext对象返回与数据库中的实际数据不同的数据。 请考虑以下数据库架构: Letter数据: Id Value LanguageId ——- ——- ———- 1 A 1 2 A 2 3 B 1 4 B 2 Language数据: Id Value ——- ——- 1 English 2 Russian 我还有以下简单的LetterLanguageView视图。 请注意,它使用LEFT JOIN子句,因为Letter.LanguageId可能为NULL : SELECT dbo.Letter.Value as Letter, dbo.Language.Value as Language FROM dbo.Letter LEFT JOIN dbo.Language ON dbo.Letter.LanguageId = dbo.Language.Id 这种观点的结果非常简单: Letter Language […]

如何将SQL数据库嵌入/附加到Visual C#中?

这是我第一次使用SQL,这可能是一个愚蠢的问题,但我做了一些研究,我不认为我找到了我正在寻找的东西。 我想要的是一种制作将在我的C#程序中使用的私有SQL数据库的方法。 我已经在SQL Server Express中创建了一个数据库,并将其连接到Visual Studio 2010。 SqlCommand DBAccess = new SqlCommand(); DBAccess.Connection = new SqlConnection( “Data Source = localhost;” + “Initial Catalog = My_Database;” + “Trusted_Connection = True”); 我可以将数据源嵌入到我的程序中,并将与其余解决方案一起编译吗? 关于该计划的一些额外背景; 这是一个程序,需要搜索数据库中的6个表,并在搜索字符串与特定字段匹配时输出DataRow的内容。 例如。 Field 1 Field 2 quick AA brown AA fox AB jumps AB over AA the AB lazy AB dog AA Search_String = […]

在阅读记录时我应该使用SQL事务吗?

SQL事务用于插入,更新,但是它应该用于读取记录吗?

“当IDENTITY_INSERT设置为OFF时,无法使用组合键在表中为标识列插入显式值”

我们最近在数据库中添加了一个新的“级别” – 在整个数据库的表中的现有ID Identity字段之上/之前添加了一个键“Company_ID”。 例如,如果某个表具有ID然后是字段,则它现在具有Company_ID,然后是ID,然后是字段。 这个想法是,这允许ID为提供给function的每个不同的Company_ID值自动递增(Company_ID 1可以具有ID 1,2,3等; Company_ID 2可以具有ID 1,2,3等)。 自动增量字段保留为ID。 示例表是: [dbo].[Project]( [Company_ID] [int] NOT NULL, [ID] [int] IDENTITY(1,1) NOT NULL, [DescShort] [varchar](100) NULL, [TypeLookUp_ID] [int] NULL, [StatusLookUp_ID] [int] NULL, [IsActive] [bit] NOT NULL, CONSTRAINT [PK_Project] PRIMARY KEY CLUSTERED ( [Company_ID] ASC, [ID] ASC ) 在引入Company_ID之前,为了执行CREATE,我们只需填充DescShort,TypeLookUp_ID,StatusLookUp_ID和IsActive字段,并将ID保留为默认值,可能为0。 记录已成功保存,ID由数据库自动填充,然后用于通过View执行SHOW,依此类推。 但是,现在我们要将Company_ID设置为指定值,保留ID,并像以前一样填充字段。 _db.Project.Add(newProject); _db.SaveChanges(); 是的,我们要指定Company_ID值。 我们希望自动填充ID,如前所述。 我们收到错误消息: […]

如何使用SqlConnection使用注释和GO语句执行SQL?

我似乎无法执行使用DbCommand对象创建数据库的SQL。 我究竟做错了什么? 这是我的代码: DbConnection connection; // initialized and opened elsewhere DbCommand cmd = connection.CreateCommand(); cmd.CommandText = sql; cmd.ExecuteNonQuery(); 这是错误: 查询语法无效。,在术语“/”,第1行,第2列附近。说明:在执行当前Web请求期间发生了未处理的exception。 请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。 exception详细信息:System.Data.EntitySqlException:查询语法无效。,在术语“/”,第1行,第2列附近。 这是文件的第一部分。 仅针对第一行的注释抛出exception: /****** Object: Table [dbo].[User] Script Date: 10/08/2009 12:14:29 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[User]( [Id] [int] IDENTITY(1,1) NOT NULL, [FirstName] [nvarchar](50) NULL, [LastName] [nvarchar](50) NULL, […]