Tag: SQL服务器

C#如何检查数据库是否不忙?

我的class上有几种方法。 第一个是创建一个数据库,完成了。 然后,创建从sql文件中读取的存储过程。 然后分离那个DB。 现在看来我的存储过程查询需要一段时间才能完成,并且在数据库繁忙时调用我的分离方法。 那么我该如何判断数据库是否空闲。 例外是“无法分离数据库,因为它当前正在使用” 方法: void CreateStoredProcedures(string type) { string spLocation = File.ReadAllText(“CreateStoredProcedures.sql”); var conn = new SqlConnection(connectionString + “;database=” + type + DateTime.Now.ToString(“yyyyMMdd”)); try { Server server = new Server(new ServerConnection(conn)); server.ConnectionContext.ExecuteNonQuery(spLocation); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } bool DetachBackup(string type) { var conn = new SqlConnection(connectionString); SqlCommand command […]

数据库中的最佳货币格式

与我的ASP.NET Web应用程序一起在我的数据库中使用的最佳货币格式是什么。 我不确定浮点数或小数点是否更好。 请注意,我不需要特定于文化的设置。

存储C#将base64转换为SQL Server varbinary(max)

我有一个角度webapp,我接受base64中的图像并将它们存储在T-SQL varbinary中。 但是,我在SQL-Server中存储的现有数据看起来是不同的二进制文件。 我需要两个二进制文件在C#中使用相同的读/更新方法。 在服务中,我正在尝试将base64字符串转换为SQL Server的varbinary,反之亦然。 在SSMS中手动,我可以只使用base64字符串并插入如下行: Cast(@base64ImgStr as varbinary(max)) 但是当我尝试从C#插入时结果是不同的: Convert.FromBase64String(base64); (相同的输入)。 由于二进制文件不同,因此图像不显示。 我需要一个C#中的方法,它提供与T-SQL中相同的二进制文件。 我必须围绕解决方案,因为我可以在SQL Server中投射并获得正确的base64(再次,不是在C#中),如下所示: cast(” as xml).value(‘xs:base64Binary(sql:variable(“@source”))’, ‘varchar(max)’) 而不是base64我得到了Unicode符号,否则我会粘贴一个例子。 我需要在不调用SQL Server base64Binary方法的情况下获取base64,因为我的服务读取如下图像: Encoding.ASCII.GetString(varbinary) 如果我将手动插入的varbinary(Cast(@ base64ImgStr as varbinary(max)))转换为varchar(max),我会得到一个base64字符串,并且图像会在我的webapp中正确显示。 但是,当我使用C#方法创建二进制文件时,情况并非如此。 使用我从Convert.FromBase64String(base64)获得的varbinary类型,我需要在SQL Server(xs:base64binary)中进行中间转换,以将二进制文件反转为base64。 没有中间转换,我得到Unicode符号,webapp中没有图像显示。 我不想进行中间转换,因为无论用户是上传图片还是有人手动插入图片,我都希望获得一致的结果。 我没有在Convert类上看到一个方法,它给了我相同类型的二进制文件。 但这似乎正是我所需要的。 我怀疑是Unicode。 请帮忙!

检查打开的窗口是否已关闭

我有一个主窗口,它是应用程序启动窗口。 在该窗口中,有一个绑定到SQL Database的Repeater控件,以及一个用于打开新窗口的按钮。 新窗口有一个方法,可以将数据插入到第一个窗口的Repeater控件读取的SQL Database中。 转发器有一个RepeaterRefresh()方法,强制它重新绑定到SQL Database ,显示任何添加的内容。 我如何能够将第二个窗口的Close()事件绑定到RepeaterRefresh()方法,因此数据会自动显示在转发器上。 我已经读过这个 , 这个 和这个 ,但我仍然觉得我的问题没有关系。

批量复制提交行没有错误

我有一个进程,它接受一个列表并使用SQL批量复制将其插入到数据库中,因为这个列表的大小有多大。 它工作正常,检查约束和所有这些都是完美的。 问题是,如果我有10,000条记录并且其中一条记录有错误,我仍然想提交其他9,999条记录。 有没有办法做到这一点,除了在SQL批量复制或一次插入一个之前手动检查每个约束? 似乎乏味而缓慢,哪种方式打败了这一点。 谢谢。 var copy = new SqlBulkCopy(ConfigurationManager.ConnectionStrings[“constr”].ConnectionString, SqlBulkCopyOptions.CheckConstraints) { DestinationTableName = obj.TableName }; var table = new DataTable(); copy.WriteToServer(table);

在C#中打开SqlConnection时没有exception

我正在创建一个连接到本地SQL Server数据库的应用程序,我使用以下方法创建连接字符串并测试exception。 public void connect(string user, string password, string server, string database) { connectString = “user id=” + user + “;” + “password=” + password + “;” + “server=” + server + “;” + “Trusted_Connection=yes;” + “database=” + database + “;” + “connection timeout=5”; myConnection = new SqlConnection(connectString); try { myConnection.Open(); isConnected = true; } […]

字符串未被识别为Sql服务器的有效DateTime C#

我将日期时间值从C#传递到SQL Server SP。 如果我传递格式dd-MM-yyyy然后它工作正常但没有从SP返回任何值,即使有该日期的记录。 如果我使用格式MM-dd-yyyy运行SP,则它返回错误“将数据类型nvarchar转换为datetime时出错”。 SP是 execute usp_detData ’22/12/2012 00:00:00′, ’31/12/2013 23:59:59′ —错误 execute usp_detData ’12/22/2012 00:00:00′, ’12/31/2013 23:59:59′ —工作正常 你能告诉我解决方案吗?

如何加速在SQL Server和C#中读取大量数据

我在我的数据库中有一个大约200,000个条目的视图。 我正在阅读以下代码: using (SqlConnection conn = new SqlConnection….) { conn.Open(); string query = “SELECT * FROM SP3DPROJECT.dbo.XSystemHierarchy”; using (SqlCommand comm = new SqlCommand()) { comm.CommandText = query; comm.Connection = conn; using (SqlDataReader reader = comm.ExecuteReader()) { DateTime start = DateTime.Now; while (reader.Read()) { // Code goes here, but for performance // test I’m letting this […]

什么是API使用?

我不确定我对API Usage的定义是正确的。 我有一段代码用于从c#应用程序进入SQL的BulkInsert。 它说该代码段显示了API使用情况。 我该如何翻译呢? private void WriteToDatabase() { // get your connection string string connString = “”; // connect to SQL using (SqlConnection connection = new SqlConnection(connString)) { // make sure to enable triggers // more on triggers in next post SqlBulkCopy bulkCopy = new SqlBulkCopy ( connection, SqlBulkCopyOptions.TableLock | SqlBulkCopyOptions.FireTriggers | SqlBulkCopyOptions.UseInternalTransaction, null […]

C#sql为每个查询创建一个连接并打开和关闭

我最近inheritance了一个C#Web应用程序,为每个查询创建一个新连接,如下所示: public class QueryForm { public bool getStudents() { SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[“conn”].ConnectionString); conn.Open(); //commands conn.Close(); } protected void getProfessors() { SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[“conn”].ConnectionString); conn.Open(); //Commands conn.Close(); } protected void getProfessors() { SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[“conn”].ConnectionString); conn.Open(); //Commands conn.Close(); } } 我知道这通常是最好的方法,但是让构造函数创建连接对象是可接受的或“最佳实践”,然后打开每个方法/ Query然后关闭该连接: public class QueryForm { SqlConnection conn; public QueryForm() […]