这个问题已经在这里有了答案 :
11年前关闭。
可能重复:
使用SqlCommand.Parameters的C#更新表
我正在尝试使用SqlCommand更新SQL Server表,我认为这是我的T-SQL的语法错误,但是到目前为止,这是我所拥有的:
SqlCommand sqlCmd = new SqlCommand(
"UPDATE yak_tickets
SET email = @emailParam, subject = @subjectParam, text = @textParam,
statusid = @statusIDParam, ticketClass = @ticketClassParam
WHERE id = @ticketIDParam", sqlConn);
参数正在按应有的方式工作,但是,当我运行代码时,表永远不会更新。任何帮助将不胜感激=)
这是其余的代码:
#region Parameters
/* Parameters */
sqlCmd.Parameters.Add("@ticketIDParam", SqlDbType.BigInt);
sqlCmd.Parameters["@ticketIDParam"].Value = ticketID;
sqlCmd.Parameters.Add("@emailParam", SqlDbType.NVarChar);
sqlCmd.Parameters["@emailParam"].Value = ticketToBeSubmitted.getEmail();
sqlCmd.Parameters.Add("@subjectParam", SqlDbType.NVarChar);
sqlCmd.Parameters["@subjectParam"].Value = ticketToBeSubmitted.getSubject();
sqlCmd.Parameters.Add("@textParam", SqlDbType.Text);
sqlCmd.Parameters["@textParam"].Value = ticketToBeSubmitted.getTicketContent();
sqlCmd.Parameters.Add("@statusIDParam", SqlDbType.NVarChar);
sqlCmd.Parameters["@statusIDParam"].Value = ticketToBeSubmitted.getStatus();
sqlCmd.Parameters.Add("@ticketClassParam", SqlDbType.NVarChar);
sqlCmd.Parameters["@ticketClassParam"].Value = ticketToBeSubmitted.getTicketClass();
#endregion
#region Try/Catch/Finally
/* Try/Catch/Finally */
try
{
sqlConn.Open();
sqlCmd.ExecuteNonQuery();
}
catch (SqlException sqlEx)
{
sqlErrorLabel.Text = sqlEx.ToString();
sqlErrorLabel.ForeColor = System.Drawing.Color.Red;
}
finally
{
sqlConn.Close();
}
以及方法的签名:
public static void updateTicketInDatabase(Ticket ticketToBeSubmitted, Label sqlErrorLabel, int ticketID)
我已经通过探查器运行了它,下面是它的作用。
Page Loads ->
Audit Login: -- Sets a bunch of stuff (irrelevant)
SQL:BatchStarting -- SELECT * from yak_tickets
SQL:BatchCompleted -- SELECT * from yak_tickets
Audit Logout
Button Click Event ->
RPC:Completed: -- exec sp_reset_connection
Audit Login: -- Sets some more stuff
SQL:BatchStarting -- SELECT * from yak_tickets
SQL:BatchCompleted -- SELECT * from yak_tickets
这是表单文件的背后代码。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using YakStudios_Support.Includes;
namespace YakStudios_Support.ys_admin
{
public partial class UpdateTicket : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
int ticketID = Convert.ToInt32(Request.QueryString["ticketID"]); // Grabs the ?ticketid number from the URL
Ticket ticketBeingUpdated = TicketDatabase.selectTicketFromDatabase(sqlErrorLabel, 1); // Creates a new Ticket object to be used by the form to populate the text boxes
/* Form Field Population */
// Email
emailTxt.Text = ticketBeingUpdated.getEmail();
// Date Submitted
dateSubText.Text = ticketBeingUpdated.getDateSubmitted().ToString();
// Ticket Class
classDropDown.SelectedValue = ticketBeingUpdated.getTicketClass();
// Ticket Status
statusDrop.SelectedValue = ticketBeingUpdated.getStatus();
// Subject
subjectTxt.Text = ticketBeingUpdated.getSubject();
// Text
textTxt.Text = ticketBeingUpdated.getTicketContent();
}
protected void editBtn_Click(object sender, EventArgs e)
{
emailTxt.Enabled = true;
dateSubText.Enabled = true;
classDropDown.Enabled = true;
statusDrop.Enabled = true;
subjectTxt.Enabled = true;
textTxt.Enabled = true;
}
protected void submitBtn_Click(object sender, EventArgs e)
{
int ticketID = Convert.ToInt32(Request.QueryString["ticketID"]); // Grabs the ?ticketid number from the URL
DateTime convertedDate = Convert.ToDateTime(dateSubText.Text);
Ticket ticketUpdated = new Ticket(emailTxt.Text, convertedDate, subjectTxt.Text, textTxt.Text, statusDrop.SelectedValue, classDropDown.SelectedValue);
//Ticket ticketUpdated = new Ticket(emailTxt.Text, subjectTxt.Text, textTxt.Text, classDropDown.SelectedValue);
Response.Write(TicketDatabase.updateTicketInDatabase(ticketUpdated, sqlErrorLabel, 1));
//Response.Redirect("ticketqueue.aspx");
}
}
}
在我看来,它正在执行的是再次运行我的select方法,这是页面加载时应该执行的操作。这是由刷新页面的按钮引起的吗?
在ExecuteNonQuery处添加一个断点,检查sqlCommand对象,使用sqlcommand查看参数,并确保将TicketId设置为您期望的值,因为更新是由ticketId驱动的,因此请确保其设置正确,或尝试直接在SQL
Server上直接运行TSQL等效项,我猜是没有设置ticketId变量,乍一看代码看起来还不错。
问题内容: 我有一个上面带有Web表单的网页。该表单已预填充了SQL Server数据库中的数据。用户可以进入并编辑任何字段,然后单击底部的“保存”按钮以更新数据库中的记录。由于某种原因,当我将表格预先填充数据时,update语句不会更新数据库中的记录。如果我删除了页面加载方法上预先填写表单的代码,则update语句将按预期工作。当我在页面加载方法中用数据预先填充表单时,update语句似乎正在使
我痛苦了3天。我正在使用兼容性库中的视图分页程序。我已经成功地让它显示了几个视图。我的问题是,当我交换视图时,不会在它的回收器视图中按片段更新数据。但当我关闭应用程序时,打开碎片会按回收器视图显示更新内容。我使用了所有方法,如setnotifydatachanged()和许多其他方法,但viewpager中的片段不更新内容。感谢所有的帮助,这是我的主要活动
因此,我在DynamoDB中有一项: 我想添加一个新的属性到上述项目,属性是: 现在,我在JS中使用AWS-SDK这样做: 但是,我得到一个错误: ExpressionAttributeValue包含无效值:一个或多个参数值无效:AttributeValue不能包含key:newAttr的空字符串 所以如果我是这样就可以了,但我不希望这个新属性是一个字符串,我希望它是一个列表。 那么我做错了什么?
问题内容: 我有一个动态数据源,它经常在浏览器中创建一个新的json。 我能够使用下面的代码从这个json创建饼图(也在这个小提琴中) 此数据经常更新,那么更新饼图的最佳方法是什么?看看这个小提琴。在这里,我还有另一个名为data2的json。 我怎样才能简单地用data2替换数据并使饼动画化/更新? 注意:在某些更新中,值可能== 0 问题答案: 我已经创建了一个有效的版本,并将其发布在这里:h
我正在尝试使用此查询更新一些记录,这基本上只是一种为客户设置“状态”的方法,考虑到他们“自上次订单以来的日子”: 但是我得到了: 错误代码: 1175年。您正在使用安全更新模式,并且您尝试更新不使用使用 KEY 列的 WHERE 的表 要禁用安全模式,请切换首选项中的选项 - 我在最终 中使用表键, 是表键。使用 不是一个选项。我还尝试使用 (我想我看到了曙光,但是没有),得到一个< code>P
问题内容: 我希望有人可以验证这是否是使用liquibase填充数据库的正确语法和正确方法吗?所有,我想要的是更改表中一行的值,而我这样做是这样的: 我想要的只是在某个表中的一行中更改一个值。上面的方法不起作用,尽管应用程序已编译并且没有抱怨,但是可惜的是,该值没有改变。 谢谢 问题答案: 对的,这是可能的。请参见以下语法: Liquibase更新中的更多信息