Tag: SQL服务器

SqlCommand中的字符串列表通过C#中的参数

在C#中使用SqlCommand我在where子句中创建了一个包含IN(list …)部分的查询。 而不是循环我的字符串列表生成我需要查询的列表(如果您认为在sqlInjection中是危险的)。 我以为我可以创建一个参数,如: SELECT blahblahblah WHERE blahblahblah IN @LISTOFWORDS 然后在代码中我尝试添加如下参数: DataTable dt = new DataTable(); dt.Columns.Add(“word”, typeof(string)); foreach (String word in listOfWords) { dt.Rows.Add(word); } comm.Parameters.Add(“LISTOFWORDS”, System.Data.SqlDbType.Structured).Value = dt; 但这不起作用。 问题: 我在尝试一些不可能的事吗 我采取了错误的做法吗? 这种方法我有错吗? 谢谢你的时间 :)

将SQL Server数据导出为CSV文件

我试图从sql server导出数据到csv文件。 我在网上和其他支持论坛寻求帮助,但我找不到如何做到这一点? 我已经编写了自己的代码,但它不起作用 – 它只是继续加载……而且失败了。 请帮忙。 这是我写的代码。 SqlConnection sqlCon = new SqlConnection(“REMOVED”); string fileName = “test.csv”; SqlCommand sqlCmd = new SqlCommand(); sqlCmd.CommandText = “Select * from products.products”; sqlCmd.Connection = sqlCon; sqlCon.Open(); using (var CommandText = new SqlCommand(“select * from products.products”)) using (var reader = sqlCmd.ExecuteReader()) using (var outFile = File.CreateText(fileName)) { string[] columnNames = […]

如何将数组传递给存储过程

我在C#中有一个列表ClaimData ,它有三个项目日期,类型和描述这里可以有多行,如下所示, ClaimData Date Type Description 01/02/2012 “Medical” “Its a medical” 05/02/2013 “Theft” “Its a Theft” 01/02/2014 “Test” “Its a Test” 我想将这整个数据传递给存储过程,一次性转到sql server,这样我就可以减少数据库的命中率。 我编写了存储过程,可以遍历此列表并将它们插入表中。 如何通过操作列表对象来实现可以作为参数传递给存储过程?

如何在C#中确定SQL Server数据库列是否为自动增量?

我需要能够从DbConnection.GetSchema()返回的DataTable中确定SQL Server表中的特定列是否是标识/自动增量。 我无法直接查询系统表。 奇怪的是,如果我通过ODBC连接到SQL Server,返回的此类列的数据类型将返回为“int identity”(或“bigint identity”等),但如果我使用本机SQL Server驱动程序,则似乎没有区分“int”列和“int identity”列。 还有其他方法可以推断出这些信息吗?

Sql批量复制内存问题

我们在C#中使用SqlBulk Copy类。 在sql中插入批量数据。 我们有一张表,里面有1000万条记录。 我们在循环中以10,000个批量插入数据 我们正面临物理内存问题。内存增加,不会减少。 以下是我们的代码。 我们如何在使用sql批量复制时释放内存,或者是否有其他方法可以进行批量插入。 using (System.Data.SqlClient.SqlBulkCopy bulkCopy = new System.Data.SqlClient.SqlBulkCopy(SQlConn,SqlBulkCopyOptions.TableLock,null)) { //bulkCopy = new System.Data.SqlClient.SqlBulkCopy(SQlConn); bulkCopy.DestinationTableName = DestinationTable; bulkCopy.BulkCopyTimeout = 0; bulkCopy.BatchSize = dt1.Rows.Count; Logger.Log(“DATATABLE FINAL :” + dt1.Rows.Count.ToString(), Logger.LogType.Info); if (SQlConn.State == ConnectionState.Closed || SQlConn.State == ConnectionState.Broken) SQlConn.Open(); bulkCopy.WriteToServer(dt1); //DataTable SQlConn.Close(); SQlConn.Dispose(); bulkCopy.Close(); if (bulkCopy != null) { ((IDisposable)bulkCopy).Dispose(); } […]

从C#代码将数据插入SQL Server

我有一个表student ( id, name )。 然后我有一个文本框,为了输入名称,当点击提交按钮时,它会将数据插入到数据库中。 那么如何才能只插入名称,而不是id,因为id是自动增量? 我试过这个 insert into student(id, name) values(,name) 但它不是插入我的表。 这是我的代码: protected void Button1_Click(object sender, EventArgs e) { string test = txtName.Text; SqlConnection conn = new SqlConnection(@”Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Person.mdf;Integrated Security=True;User Instance=True”); string sql = “insert into student(name) values (‘test’)”; try { conn.Open(); SqlCommand cmd = new SqlCommand(sql, conn); cmd.ExecuteNonQuery(); } catch (System.Data.SqlClient.SqlException […]

SQL Azure BACPAC提取

如何以编程方式(C#)从SQL Azure数据库中提取BACPAC文件? 我正在考虑创建一个azure作业来提取这个bacpack文件并在发生特定exception时将其保存到我的存储帐户…我正试图获取heinsenbug和当时数据库的快照这个活动会非常有帮助。

C#Alter Table并以编程方式添加一列ASP.Net和SQL Server

我一直在尝试在ASP.NET中以编程方式添加列来修改SQL Server中的表。 请参阅以下代码: string suppliernotxt = supplieridlist[1].ToString(); //SqlCommand cmd2 = new SqlCommand(“ALTER TABLE [ProductNormalDB] ADD suppliernotxt nvarchar(20) NULL”, con); SqlCommand cmd2 = new SqlCommand(“ALTER TABLE ProductNormalDB ADD @supplierlist nvarchar(20) NULL”, con); cmd2.Parameters.AddWithValue(“@supplierlist”, suppliernotxt); //cmd2.Parameters.AddWithValue(“@supplierlist”, suppliernotxt.ToString()); //cmd2.Parameters[“@supplierlist”].Value = supplieridlist[x]; cmd2.ExecuteNonQuery(); supplieridlist是一个数组,它获取要添加到SQL Server数据库中的所有列名。 由于某种原因,参数化方法不起作用并显示以下错误: ‘@supplierlist’附近的语法不正确。 基本思路是让用户从复选框中选择供应商的名称,根据所选的供应商数量,arrays将为ex创建供应商名称。 如果我们选择了3个供应商,arrays将保存”Supplier1″ , “Supplier2” , “Supplier3” ,然后SqlCommand应该更改表并添加新列。

在不知道sqlDbType的情况下将DBNull.Value与SqlParame一起使用?

我正在使用SqlParameter将空值传递给可以为空的各种列的表。 问题是如果没有sqlDbType,SqlParameter看起来默认为nvarchar。 如果实际的db类型是varbinary,则会出现问题。 我得到一个例外说法 不允许从数据类型nvarchar到varbinary(max)的隐式转换。 使用CONVERT函数运行此查询。 当我创建SqlParameter时,我所知道的只是参数的名称和对象。 如果对象为null,SqlParameter显然无法推断出正确使用的类型,那么有没有办法将SqlParameter与null值一起使用,而不必在创建sql参数时知道sqlDbType? 基本上将DBNull传递给数据库而不指定类型,让数据库处理它?

SQL数据错误:将varchar数据类型转换为日期时间数据类型会导致超出范围的值

我有一个SQL查询返回此错误: 将varchar数据类型转换为日期时间数据类型会导致超出范围的值 这是查询: POQuery = “SELECT Distinct PurchaseOrders.POrderID, PurchaseOrders.VendorName, PurchaseOrderDetail.ArrDate ” + “FROM PurchaseOrders ” + “FULL JOIN PurchaseOrderDetail ON PurchaseOrders.POrderID = PurchaseOrderDetail.POrderID ” + “WHERE PurchaseOrders.Buyer = @Buyer and ArrDate >= convert(DateTime, ‘” + datePickerStart.Value.ToString(“mm/dd/yyyy”) + “‘) and ArrDate <= convert(DateTime, '" + datePickerEnd.Value.ToString("mm/dd/yyyy") + "')"; 我正在使用datepicker来挑选日期。