这里点确认下单没有反应,订单里也没有数据
就是这个页面上的数据插不进去,不知道怎么回事
引自免费微信小程序:皆我百晓生
从你提供的代码片段来看,问题可能出在几个关键点上,包括SQL语句的格式、参数绑定、数据库连接以及事务处理。下面我会逐步分析并提供一个修正后的代码示例。
首先,你的SQL命令中存在语法错误,具体是在VALUES
子句中。你使用了(CuserNam
而不是正确的@userName
参数标识符。此外,参数列表中的最后一个元素后面不应该有逗号。
修正后的SQL语句应该是这样的:
"INSERT INTO orders(userName, RealName, postcode, address, tel, memo, totalPrice, isPay, isDeliver, orderDate) VALUES (@userName, @RealName, @postcode, @address, @tel, @memo, @totalPrice, @isPay, @isDeliver, @orderDate)"
接下来,检查你的数据库连接字符串是否正确。确保System.Configuration.ConfigurationSettings.AppSettings["Db"]
返回的是一个有效的数据库连接字符串。
以下是修正后的payorder
方法的代码:
public int payorder(string UserName, string RealName, string postcode, string address, string tel, string memo)
{
using (SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["Db"]))
{
string sql = "INSERT INTO orders(userName, RealName, postcode, address, tel, memo, totalPrice, isPay, isDeliver, orderDate) VALUES (@userName, @RealName, @postcode, @address, @tel, @memo, @totalPrice, @isPay, @isDeliver, @orderDate)";
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.AddWithValue("@userName", UserName);
cmd.Parameters.AddWithValue("@RealName", RealName);
cmd.Parameters.AddWithValue("@postcode", postcode);
cmd.Parameters.AddWithValue("@address", address);
cmd.Parameters.AddWithValue("@tel", tel);
cmd.Parameters.AddWithValue("@memo", memo);
cmd.Parameters.AddWithValue("@totalPrice", getTotalprice());
cmd.Parameters.AddWithValue("@isPay", "0");
cmd.Parameters.AddWithValue("@isDeliver", "0");
cmd.Parameters.AddWithValue("@orderDate", DateTime.Now);
conn.Open();
try
{
int result = cmd.ExecuteNonQuery();
// 如果需要获取插入后生成的ID,可以使用下面的代码
// object lastId = cmd.ExecuteScalar();
return result;
}
catch (Exception ex)
{
// 这里可以添加错误处理逻辑
throw new Exception("Error inserting order: " + ex.Message);
}
finally
{
conn.Close();
}
}
}
}
这段代码包含了完整的异常处理机制,并且使用了using
语句来确保资源(如数据库连接)能够被正确释放。如果getTotalprice()
方法已经定义并且能够正确返回订单总价,那么上述代码应该可以解决你遇到的问题。
如果问题仍然存在,建议检查以下几个方面:
getTotalprice()
方法返回的值类型与数据库表中totalPrice
字段的类型相匹配。orders
的字段定义,确保字段名和数据类型与SQL命令中使用的参数一致。