[英]ASP.NET Sql insert Error converting data type nvarchar to numeric
[英]ASP.NET Error converting datatype nvarchar to numeric
我正在尝试将产品详细信息插入到我的产品表中以进行存储,然后从中进行选择以显示
我已经尝试过了
cmd.Parameters.AddWithValue("ProdPrice", Convert.ToInt32(txtProdPrice.Text));
cmd.Parameters.AddWithValue("ProdPrice", decimal.Parse(txtProdPrice.Text));
cmd.Parameters.AddWithValue("prodStock", int.Parse(txtProdStock.Text));
产品表
CREATE TABLE [dbo].[Product] (
[ProdID] INT IDENTITY (1, 1) NOT NULL,
[ProdName] NVARCHAR (50) NOT NULL,
[ProdPrice] DECIMAL (18, 2) NULL,
[ProdDesc] NVARCHAR (MAX) NULL,
[ImageName] NVARCHAR (255) NULL,
[Size] INT NULL,
[ImageData] VARBINARY (MAX) NULL,
[ProdBrand] NVARCHAR (50) NULL,
[ProdStock] INT NULL,
PRIMARY KEY CLUSTERED ([ProdID] ASC)
.ASPX.CS代码
string cs = ConfigurationManager.ConnectionStrings["DataBase"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd = new SqlCommand("insert into Product values (@ProdName, @ProdDesc, @ProdPrice, @ImageName, @Size, @ImageData, @ProdBrand, @ProdStock);", con);
cmd.Parameters.AddWithValue("ProdName", txtProdName.Text);
cmd.Parameters.AddWithValue("ProdDesc", txtProdDesc.Text);
cmd.Parameters.AddWithValue("ProdPrice", decimal.Parse(txtProdPrice.Text));
cmd.Parameters.AddWithValue("ImageName", fileName);
cmd.Parameters.AddWithValue("Size", fileSize);
cmd.Parameters.AddWithValue("ImageData", bytes);
cmd.Parameters.AddWithValue("ProdBrand", ddlBrand.SelectedItem.Text);
cmd.Parameters.AddWithValue("prodStock", int.Parse(txtProdStock.Text));
con.Open();
cmd.ExecuteNonQuery();
con.Close();
lblImageResult.Visible = true;
lblImageResult.Text = "Upload Successful";
lblImageResult.ForeColor = System.Drawing.Color.Green;
所有结果仍然相同,“将数据类型nvarchar转换为数字时出错”
如果未在insert语句中指定字段,则提供的值应按表的列顺序排列。
... insert into Product values (@ProdName, @ProdPrice, @ProdDesc, ....
如前所述,当您未在插入中指定列名时,假定参数与表列的顺序相同。 在您的情况下,ProdDesc和ProdPrice参数与其各自的表列的顺序不同,因此出错。
要么重新排序这些参数,要么更好地指定查询中的列:
SqlCommand cmd = new SqlCommand("insert into Product (ProdName, ProdDesc, ProdPrice, ImageName, Size, ImageData, ProdBrand, ProdStock) values (@ProdName, @ProdDesc, @ProdPrice, @ImageName, @Size, @ImageData, @ProdBrand, @ProdStock);", con);
ProdID是标识列,没有指定列字段名称,这就是为什么它试图插入ProdID列但ProdID是INT值。
SqlCommand cmd = new SqlCommand("insert into Product (ProdName,ProdDesc,ProdPrice,ImageName,Size,ImageData,ProdBrand,ProdStock) values (@ProdName, @ProdDesc, @ProdPrice, @ImageName, @Size, @ImageData, @ProdBrand, @ProdStock);", con)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.