Tag: sqlcommand

使用ADO.Net将utf-8写入sql server文本字段并保持UTF-8字节

我有一些编码为UTF-8的xml,我想将其写入SQL Server中的Text字段。 UTF-8与Text字节兼容,因此它应该能够执行此操作,然后读出仍然编码为utf-8的xml。 但是,在UTF-8中使用多字节的特殊字符(例如ÄÅ)会在途中发生变化。 我有这样的代码: byte[] myXML = … SqlCommand _MyCommand = new SqlCommand(storeProcedureName, pmiDB.GetADOConnection()); _MyCommand.CommandType = CommandType.StoredProcedure; _MyCommand.Parameters.Add(“xmlText”, SqlDbType.Text); _MyCommand.Parameters[“xmlText”].Value = Encoding.UTF8.GetString(myXML); _MyCommand.ExecuteNonQuery(); 我的猜测是将xml字节数组更改为字符串会将特殊字符更改为UTF-16字符,然后再将其更改为Latin1。 拉丁语1ÖÅ与UTF-8ÖÄÅ不同。 如何在不更改的情况下将UTF-8 xml字节写入文本字段?

SqlCommand.Prepare方法要求所有参数都具有显式设置类型

我在我的WCF Web服务中有以下代码片段,它根据提供的字典值的格式构建一组where条件。 public static Dictionary[] VehicleSearch(Dictionary searchParams, int maxResults) { string condition = “”; foreach (string key in searchParams.Keys) { //Split out the conditional in case multiple options have been set (ie SUB;OLDS;TOY) string[] parameters = searchParams[key].Split(‘;’); if (parameters.Length == 1) { //If a single condition (no choice list) check for wildcards and use a […]

如何将表名传递给SqlCommand?

我试图通过SqlCommand将表名作为参数传递给我的查询但它似乎没有工作。 这是我的代码; SqlConnection con = new SqlConnection( “server=.;user=sa;password=12345;database=employee” ); con.Open( ); SqlCommand cmd = new SqlCommand( “drop table @tbName” , con ); cmd.Parameters.AddWithValue( “@tbName” , “SampleTable” ); cmd.ExecuteNonQuery( ); con.Close( );

SqlDataReader和SqlCommand

我有以下代码。 using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings[“ConnectionString”].ConnectionString)) { connection.Open(); SqlCommand select = new SqlCommand(“SELECT RTRIM(LTRIM(PART_NO)) AS PART_NO, record FROM [RMAData].[dbo].[IMPORTING_ORDER_EDI] WHERE sessionID = ‘” + Session.SessionID + “‘”, connection); SqlDataReader reader = select.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { if (!currentPart.IsActive) { // this part is not active, set the active flag in sql to […]

内循环中的ExecuteNonQuery

我正在尝试在C#中的循环中插入数据库记录。 它在我硬编码这样的值时起作用: string query3 = “INSERT INTO furniture (room_id,member_id) VALUES (222,333);”; SqlCommand cmd3 = new SqlCommand(query3, sqlConnection3); sqlConnection3.Open(); for (int i = 0; i < arrItemsPlanner.Length; i++) { try { cmd3.ExecuteNonQuery(); } catch { return "Error: Item could not be saved"; } finally { //Fail } } 但是,当我使用参数化查询时,它不起作用 – 即使我将值硬编码到参数化查询中,如下所示: string query3 = “INSERT INTO […]

期望参数’@ID’,没有提供?

我发送ID作为outparameter,但它给出了错误 System.Data.SqlClient.SqlException:过程或函数’usp_ClientHistoryItem’需要参数’@ID’,这是未提供的。 码 using (SqlCommand cmd = new SqlCommand(“dbo.usp_ClientHistoryItem”, conn)) { SqlParameter parameterID = new SqlParameter(“@ID”, oReservation.Id); parameterID.Direction = ParameterDirection.Output; cmd.Parameters.Add(parameterID); cmd.Parameters.Add(new SqlParameter(“@PhoneNo”, oReservation.ClientPhone)); cmd.Parameters.Add(new SqlParameter(“@UserId”, oReservation.UserID)); cmd.Parameters.Add(new SqlParameter(“@Description”, oReservation.Description)); cmd.Parameters.Add(new SqlParameter(“@TestId”, oReservation.TestId)); cmd.Parameters.Add(new SqlParameter(“@StartDate”, oReservation.StartDate)); cmd.ExecuteNonQuery(); returnValue = Convert.ToInt32(cmd.Parameters[“@ID”].Value); return returnValue; }

如何将变量传递给SqlCommand语句并插入到数据库表中

我正在用C#编写一个小程序,它使用SQL在运行时根据用户的输入将值存储到数据库中。 唯一的问题是我无法找出正确的Sql语法来将变量传递到我的数据库中。 private void button1_Click(object sender, EventArgs e) { int num = 2; using (SqlCeConnection c = new SqlCeConnection( Properties.Settings.Default.rentalDataConnectionString)) { c.Open(); string insertString = @”insert into Buildings(name, street, city, state, zip, numUnits) values(‘name’, ‘street’, ‘city’, ‘state’, @num, 332323)”; SqlCeCommand cmd = new SqlCeCommand(insertString, c); cmd.ExecuteNonQuery(); c.Close(); } this.DialogResult = DialogResult.OK; } 在这段代码中,我使用了所有静态值,除了我试图传递给数据库的num变量。 在运行时我收到此错误: A […]

SqlDbType.Structured是什么意思?

从msdn 网站我得到以下内容: 一种特殊数据类型,用于指定表值参数中包含的结构化数据。 似乎我的代码使用它而没有它(使用存储过程将表推送到DB)。 有人可以解释它做了什么 – 我从定义中不理解它。

SqlCommand对象,CommandTimeout的时长是多少?

在使用SqlCommand对象时,如何确定使用超时的时间长度? 在我正在处理的部分代码上(由其他人编写)我有: cmd.CommandTimeout = 60; 我觉得这很短暂。 但是,我在论坛上看到一些人谈论将它设置为30000,这似乎太长了。 我怎么知道什么是我的应用程序的最佳选择?

使用SqlCommand,如何向其对象添加多个参数,通过sql表中的winform插入

我的winform中有十个文本框,我需要将这些文本框中键入的文本保存到SQL数据库表的10列中。 所以,我应该这样写: INSERT INTO item (c1,c2,c3…,c10) values (@a,@b….@j) cmd.Parameters.Add(“@a”,SqlDbType.Varchar) cmd.Parameteres[“@a”].Value=textbox1.Text; cmd.Parameters.Add(“@b”,SqlDbType.Varchar) cmd.Parameteres[“@b”].Value=textbox2.Text;. . . . . cmd.Parameters.Add(“@j”,SqlDbType.Varchar) cmd.Parameteres[“@j”].Value=textbox10.Text; 或每个文本框的十个单独查询: INSERT INTO item (c1) values (@a) cmd.Parameters.Add(“@a”,SqlDbType.Varchar) cmd.Parameteres[“@a”].Value=textbox1.Text; INSERT INTO item (c2) values (@b) cmd.Parameters.Add(“@b”,SqlDbType.Varchar) cmd.Parameteres[“@b”].Value=textbox2.Text;. . . INSERT INTO item (c10) values (@j) cmd.Parameters.Add(“@j”,SqlDbType.Varchar) cmd.Parameteres[“@j”].Value=textbox10.Text; 或者,请建议一个有效的代码。 如何在单个语句中向cmd添加多个参数? 可能吗?