Tag: sql server

如何使用Datagridview绑定源C#更新SQL Server数据库

我正在用C#编写Winforms应用程序,使用户可以使用datagridview编辑和更新数据库。 问题是,我无法让它发挥作用。 我设法实现的唯一目标是更新datagridview显示的内容,但是当我进入数据库表时,数据没有变化。 我搜索了很多网站讨论这个问题,但没有什么对我有用。 到目前为止我尝试过的事情: 将数据库绑定到datagridview 将“ Copy to Output Directory属性更改为Copy if newer 使用dataAdapter.Update((DataTable)bindingSource1.DataSource)执行或不执行任何更新查询。 在没有dataAdapter.update(…)情况下执行更新查询。 这是我的代码: public Form1() { InitializeComponent(); GetData(“SELECT * FROM Table1”); } void GetData(string selectCommand) { SqlConnection conn = new SqlConnection(Properties.Settings.Default.NewDBTESTConnectionString); dataAdapter = new SqlDataAdapter(selectCommand, conn); commandBuilder = new SqlCommandBuilder(dataAdapter); table = new DataTable(); dataAdapter.Fill(table); bindingSource1.DataSource = table; dataGridView1.DataSource = bindingSource1; } […]

操作数类型冲突:varchar与尝试插入加密数据库的varchar(50)不兼容

我收到一个SqlException : 操作数类型冲突:varchar与使用加密的varchar(50)不兼容(encryption_type =’DETERMINISTIC’,encryption_algorithm_name =’AEAD_AES_256_CBC_HMAC_SHA_256’,column_encryption_key_name =’CEK_Auto1’,column_encryption_key_database_name =’PB’)collat​​ion_name =’SQL_Latin1_General_CP1_CI_AS’\ r \ n无正确的参数加密从客户端收到元数据。 在调用批处理期间发生错误,因此客户端可以通过调用sp_describe_parameter_encryption刷新参数加密元数据并重试。 我的C#代码: using (var connection = new SqlConnection(GetConnectionString())) { using (var cmd = new SqlCommand(“Clients_Insert”, connection)) { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(“@Email”, SqlDbType.VarChar, 50).Value = client.Email; cmd.Parameters.Add(“@ContactPerson”, SqlDbType.VarChar, 400).Value = client.ContactPerson; connection.Open(); cmd.ExecuteNonQuery(); } } 和我的存储过程: ALTER PROCEDURE [dbo].[Clients_Insert] @Email VARCHAR(50), @ContactPerson VARCHAR(400) AS BEGIN […]

什么是Fluent NHibernate中的schemaExport?

我很想知道更多关于这段代码以及执行时的预期。 /// /// Sets up NHibernate, and adds an ISessionFactory to the given /// container. /// private void ConfigureNHibernate(IKernel container) { // Build the NHibernate ISessionFactory object var sessionFactory = FluentNHibernate .Cfg.Fluently.Configure() .Database( MsSqlConfiguration.MsSql2008.ConnectionString( c => c.FromConnectionStringWithKey(“ServicesDb”))) .CurrentSessionContext(“web”) .Mappings(m => m.FluentMappings.AddFromAssemblyOf()) //.ExposeConfiguration(cfg => new SchemaUpdate(cfg).Execute(true, true)) .ExposeConfiguration(cfg => { var schemaExport = new SchemaExport(cfg); schemaExport.Drop(true, […]

我可以通过SQL Server触发器调用C#函数吗?

外部应用程序来到我的数据库,用于在Sql server表中插入行。 我自己有一个Web应用程序,我希望在此表中的每个插入,做一些服务器端。 我的想法是在表上插入时创建一个触发器,然后调用适当的函数。 做这个的最好方式是什么 ? 我使用框架3.5与LINQ to SQL和SQL Server 2005数据库。 编辑 :谢谢你的答案。 SQL Server CLR集成不会这样做。 支持的少数库不符合我的要求。 我必须记录的表格可能每5分钟就会记录一次,而不是那么多。 也许我每分钟都能找到一份工作,看看身份证,拿走所有新身份证,做我的治疗。 我的解决方案不是太难看了吗?

Linq To Sql和identity_insert

我试图在主键是Identity字段的表上进行记录插入。 我试过打电话 mycontext.ExecuteCommand(“SET identity_insert myTable ON”) 但这没有任何好处。 当我提交更改时,我收到一条错误,提示IDENTITY_INSERT为OFF 。 在提交更改之前,如何从C#代码打开它? 编辑 我已经读过这是因为ExecuteCommand的代码在不同的会话中执行。 编辑2 有没有什么办法可以执行一些DDL来从我的C#代码中删除身份规范,进行插入,然后重新打开身份规范?

从ADO.NET和SMSS执行时,具有相同查询计划的相同查询需要大约10倍的时间

我的查询相当复杂,但我已经简化了它来解决这个问题,现在它是一个简单的JOIN,我在SQL Server 2014数据库上运行。 查询是: SELECT * FROM SportsCars as sc INNER JOIN Cars AS c ON c.CarID = sc.CarID WHERE c.Type = 1 当我从SMSS运行此查询并在SQL事件探查器中观察它时,执行大约需要350毫秒。 当我使用Entity Framework或ADO.NET在我的应用程序中运行相同的查询时(我已尝试过两者)。 执行需要4500ms。 ADO.NET代码: using (var connection = new SqlConnection(connectionString)) { connection.Open(); var cmdA = new SqlCommand(“SET ARITHABORT ON”, connection); cmdA.ExecuteNonQuery(); var query = “SELECT * FROM SportsCars as sc INNER […]

将图像文件保存到sql Server并将字节数组转换为图像

我将图像存储在数据库中,并希望将它们从字节数组转换为图像。 我没有问题将对象转换为字节数组但是在尝试从字节数组转换为图像时出现“参数无效”错误。 我传递给我的方法的对象来自数据集行。 存储过程 USE [—————-] GO /****** Object: StoredProcedure [dbo].[usp_imageloader_add_test] Script Date: 01/16/2012 09:19:46 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER procedure [dbo].[usp_imageloader_add_test] @p_Image Image as INSERT into Test_Images VALUES(@p_Image) 上传文件控制 /将图像文件转换为字节数组并将数据保存到数据库 protected void btnUpload_Click(object sender, EventArgs e) { if (ctrlUpload.PostedFile != null) { if (ctrlUpload.PostedFile.ContentLength > 0) { // Get […]

检查dbgeometry dbgeometry / dbgeography点是否在多边形内

我有一个问题,希望你们能帮助我解决。 我有一个DbGeometry点(或DbGeography,我可以使用两者),我想检查它是否在DbGeometry Polygon(或者DbGeography)中。 我现在这样做: var dbZones = new List(); foreach(var zone in zones) { var res = from z in DatabaseContext.Zones let boundary = !z.BoundaryGeometry.IsValid ? SqlSpatialFunctions.MakeValid(z.BoundaryGeometry) : z.BoundaryGeometry where z.ID == zone.ID && point.Within(boundary) select z; if(res.FirstOrDefault() != null) dbZones.Add(res.FirstOrDefault()); } 所以我遍历区域(我的数据库的EF实体)并检查我的这个点是否在这个边界内。 问题是它没有返回任何结果,但我知道那个点在该边界内,因为我手动创建了边界,并且该点位于该边界内。 任何人都可以告诉我,如果有其他方法可以做到这一点或其他什么,我做错了什么? 非常感谢。 曼努埃尔

如何修复错误“命名管道提供程序,错误:40 – 无法打开到SQL Server的连接”

所以我试图创建一个简单的C#控制台应用程序,只需查询数据库 – 仅此而已。 但是,我一直收到这个错误: System.Data.dll中发生了未处理的“System.Data.SqlClient.SqlException”类型exception 附加信息:建立与SQL Server的连接时发生与网络相关或特定于实例的错误。 服务器未找到或无法访问。 validation实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:命名管道提供程序,错误:40 – 无法打开与SQL Server的连接) 现在,我已经尝试了一切! 我已经编辑了所有设置(添加了防火墙例外,启用了TCP / IP,几乎可以通过谷歌搜索找到任何解决方案,我做了)。 当我尝试使用SQL Management Studio使用我的连接字符串中的相同凭据建立连接时,一切都完美无缺。 BUt由于某种原因,Visual Studio无效。 这是我的连接字符串: 这是app: class Program { public static void Main(string[] args) { Invoicing db = new Invoicing(“Invoicing”); var q = from sin Invoice where s.Date == 201007 select s; foreach(var sin q) Console.WriteLine(“{0}, […]

ADO.Net:从SQL服务器表中获取表定义

我正在使用C#编写一个方法,该方法返回有关表的以下信息:列名,列类型,列大小,外键。 有人能指出我如何实现这个目标吗?