Tag: sql server

从C#代码中避免在MSSQL Server上注入SQL的算法?

什么是避免在C#.net平台上进行SQL注入的最佳方法。 如果有的话,请发布C#实现。

如何从SQL Server 2008错误代码中识别主键重复?

我想知道如何从C#中的SQL Server错误代码中识别主键重复错误。 作为一个例子,我有一个C#表单将数据输入到SQL Server数据库中,当数据输入时发生错误时,如何从exception中识别出错误的原因?

返回标识值时,ExecuteScalar vs ExecuteNonQuery

如果我想返回新插入行的标识列,请尝试确定是否最好使用ExecuteScalar或ExecuteNonQuery 。 我已经阅读了这个问题并且我理解了那里的差异,但是在查看几周前我写的一些代码时(虽然从这个网站大量借用)我发现在我的插入中我使用的是ExecuteScalar ,如下所示: public static int SaveTest(Test newTest) { var conn = DbConnect.Connection(); const string sqlString = “INSERT INTO dbo.Tests ( Tester , Premise ) ” + ” VALUES ( @tester , @premise ) ” + “SET @newId = SCOPE_IDENTITY(); “; using (conn) { using (var cmd = new SqlCommand(sqlString, conn)) { cmd.Parameters.AddWithValue(“@tester”, newTest.tester); […]

动态/编程地向SQL添加WHERE子句

如何以编程方式将搜索条件添加到SQL存储过程? 在我的应用程序(C#)中我正在使用存储过程(SQL Server 2008R2) ALTER PROCEDURE [dbo].[PROC001] @userID varchar(20), @password varchar(20) AS SELECT * FROM tUsers WHERE RTRIM(Name) = @userID AND RTRIM(Password) = @password 我希望通过更多条件扩展此查询,现在我不知道有多少条件将使用此查询,因为程序执行… 2,3,6或20.我想以编程方式添加这些条件,如: SELECT * FROM tUsers WHERE RTRIM(Name) = @userID AND RTRIM(Password) = @password AND Field2 = ‘1’ AND Field3 = ‘0’ OR Field4 ‘8’ AND Field5 < '100' …. 是否可以动态地向存储过程发送条件?

尽管使用了查询字符串,但在使用sql COUNT时,ExecuteNonQuery返回-1

出于某种原因,C#中的ExecuteNonQuery()返回-1 ,但是当我单独运行查询时,该值返回所需的实际值。 例如: try { var connString =”Data Source=ServerName;InitialCatalog=DatabaseName;Integrated Security=true;” SqlConnection conn = new SqlConnection(connString); SqlCommand someCmd = new SqlCommand(“SELECT COUNT(*) FROM SomeTable”); someCmd.Connection = conn; conn.Open(); var theCount = cmd.ExecuteNonQuery(); conn.Close(); } catch(Exception ex) { Console.WriteLine(ex.Message); } 执行命令时,返回-1 。 虽然如果单独运行查询, SELECT COUNT(*) FROM SomeTable; 如果要查询的表有4行,则列返回一行,计数为4 。

SqlDbType映射到varBinary(max)的是什么?

SqlDbType映射到varBinary(max)的是什么? SqlDbType.VarBinary说它限制在8K。 SQL Server文档说varbinary(max)可以存储aprrox。 2GB。 但是SqlDbType.VarBinary说它限制在8K。

在哪里(ID数组)

我有webservice,它传递了一组int。 我想按如下方式执行select语句,但不断出错。 我需要将数组更改为字符串吗? [WebMethod] public MiniEvent[] getAdminEvents(int buildingID, DateTime startDate) { command.CommandText = @”SELECT id, startDateTime, endDateTime From tb_bookings WHERE buildingID IN (@buildingIDs) AND startDateTime <= @fromDate"; SqlParameter buildID = new SqlParameter("@buildingIDs", buildingIDs); }

我可以使用ADFS 2.0对SQL Server的某些用户进行身份validation吗?

我一直在使用ADFS使用VS中的声明感知模板来validation用户对AD的罚款。 我们的一些用户将不在Active Directory中,因此我想知道是否可以配置ADFS以便为这些用户查找SQL Server,然后继续正常运行。 ADFS2.0是否提供自定义身份validation存储? 是一个类似的问题,只有一个人说是的,它可以做,而其他人说,你不能。

如何将XML从C#传递到SQL Server 2008中的存储过程?

我想将xml文件传递给sql server存储过程,如下所示: CREATE PROCEDURE BookDetails_Insert (@xml xml) 我想比较一些字段数据与其他表数据,如果匹配,则必须将记录插入到表中。 要求: 如何将XML传递给存储过程? 我试过这个,但它不起作用: [工作] command.Parameters.Add( new SqlParameter(“@xml”, SqlDbType.Xml) { Value = new SqlXml(new XmlTextReader(xmlToSave.InnerXml, XmlNodeType.Document, null)) }); 如何访问存储过程中的XML数据? 编辑: [工作] String sql = “BookDetails_Insert”; XmlDocument xmlToSave = new XmlDocument(); xmlToSave.Load(“C:\\Documents and Settings\\Desktop\\XML_Report\\Books_1.xml”); SqlConnection sqlCon = new SqlConnection(“…”); using (DbCommand command = sqlCon.CreateCommand()) { **command.CommandType = CommandType.StoredProcedure;** command.CommandText […]

如何在C#中使用SMO列出可用的SQL Server实例?

任何人都可以在下面的代码中解释我的错误: DataTable dt=SmoApplication.EnumAvailableSqlServer(true); Server sr = new Server(“Test”); foreach(DataBase db in sr.DataBases) { Console.WriteLine(db[“name”]); } 它在sr.Databases中提供了一个无法连接的例外。