【发布时间】:2017-05-10 06:48:33
【问题描述】:
我只是有一个简单的方法显示如下:
private void Button_Click_1(object sender, RoutedEventArgs e)
{
string sqlcmdString = string.Format("UPDATE Bills SET Name = '@name', Time = '@time', Product = '@pro', Price = @money WHERE Name = '@value';");
using (SqlConnection con = new SqlConnection(sqlcmdString))
using (SqlCommand cmd = new SqlCommand("dbo.Bills", con))
{
// tell ADO.NET it's a stored procedure (not inline SQL statements)
cmd.CommandType = CommandType.StoredProcedure;
// define parameters
cmd.Parameters.Add("@name", SqlDbType.NVarChar, 100).Value = tb_TenKH.Text;
cmd.Parameters.Add("@time", SqlDbType.DateTime).Value = cb_Thoigian.Text;
cmd.Parameters.Add("@pro", SqlDbType.NVarChar, 100).Value = tb_SanPham.Text;
cmd.Parameters.Add("@money", SqlDbType.Money).Value = tb_ThanhTien.Text;
cmd.Parameters.Add("@value", SqlDbType.NVarChar, 100).Value = cellvalue;
// open connection, execute stored procedure, close connection again
con.Open();
if (cmd.ExecuteNonQuery() > 0)
{
//dosomething
}
else
{
MessageBox.Show("Failed!!!");
}
con.Close();
}
}
无法运行此行。当我调试它时,它显示错误:
System.ArgumentException: '初始化字符串的格式不 不符合从索引 0 开始的规范。'
我知道我的sqlcmdString 出了点问题,可能与语法有关,但我无法确定。请帮帮我。
【问题讨论】:
-
SqlConnection需要连接字符串作为参数,而不是更新查询。更新属于SqlCommand。 -
你在哪里传递 SP 名称?? “dbo.Bills”看起来不像 SP 名称。请参阅此 SO 帖子:stackoverflow.com/questions/12834249/…
-
@diiN__________ 那么我能做些什么来处理它?我被困住了......
-
@NareshRavlani 我没有通过任何 SP,“dbo.Bills”是我想在 DB 中更新的表的名称。是错误的语法吗?请帮帮我。
-
@PhanThếKhương :正如您提到的作为存储过程的 CommandType,我相信您想在这里使用 SP。使用 SP 时,不必从 C# 代码传递查询和表名。相反,您必须传递 SP 的名称和 SP 的参数。在我之前的评论中,我分享了一个链接,请参考它,如果您需要更多帮助,请告诉我。
标签: wpf parameters ado.net