尝试插入我的数据失败
Failed trying to insert my data
我正在尝试将一些列表插入我的数据库 (Microsoft),但我遇到了这个 运行 时间错误
Failed to convert parameter value from a List`1 to a Int32.
这是我的代码
public void InsertInventory(DateTime _date, int _customer_Id,
int _employee_Id, List<int> _product_Id,
List<int> _amountSold,
List<int> _unitPrice, List<int> _totalPrice)
{
Connection_String = @"Data Source=MOSTAFA-PC;Initial Catalog="
+ "Sales and Inventory System"
+ ";Integrated Security=TrueData Source=MOSTAFA-PC;Initial Catalog="
+ "Sales and Inventory System"
+ ";Integrated Security=True;";
Query = "insert into Inventory" +
"(Customer_Id,Employee_Id,Product_Id,[Date],[Amount Sold],[Unit Price],[Total Price])" +
"values (@customer_id,@Employee_id,@Product_id,@[Date],@[Amount_Sold],@[Unit_Price],@[Total_Price])";
using (Con = new SqlConnection(Connection_String))
using (Cmd = new SqlCommand(Query, Con))
{
Cmd.Parameters.Add("@customer_id", SqlDbType.Int);
Cmd.Parameters.Add("@Employee_id", SqlDbType.Int);
Cmd.Parameters.Add("@Product_id", SqlDbType.Int);
//Cmd.Parameters.Add("@[Date]", SqlDbType.NVarChar);
Cmd.Parameters.Add("@[Date]", SqlDbType.Date);
Cmd.Parameters.Add("@[Amount_sold]", SqlDbType.Int);
Cmd.Parameters.Add("@[Unit_Price]", SqlDbType.Decimal);
Cmd.Parameters.Add("@Total_Price", SqlDbType.Decimal);
Cmd.Connection = Con;
Con.Open();
int RecordToAdd = _product_Id.Count;
for (int i = 0; i < RecordToAdd; i++)
{
Cmd.Parameters["@customer_id"].Value = _customer_Id;
Cmd.Parameters["@Employee_id"].Value = _employee_Id;
Cmd.Parameters["@Product_id"].Value = _product_Id;
Cmd.Parameters["@[Date]"].Value = _date;
Cmd.Parameters["@[Amount_sold]"].Value = _amountSold;
Cmd.Parameters["@[Unit_Price]"].Value = _unitPrice;
Cmd.Parameters["@Total_Price"].Value = _totalPrice;
Cmd.ExecuteNonQuery();
}
我搜索了网站,但找不到任何有用的或与我的问题类似的东西
我该怎么办?
将 FUNCTION PARAMETERS 中的 "List<>" 更改为 Int32 或 Integer。
改变这个:
int RecordToAdd = _product_Id.Count;
for (int i = 0; i < RecordToAdd; i++)
{
Cmd.Parameters["@customer_id"].Value = _customer_Id;
Cmd.Parameters["@Employee_id"].Value = _employee_Id;
Cmd.Parameters["@Product_id"].Value = _product_Id;
Cmd.Parameters["@[Date]"].Value = _date;
Cmd.Parameters["@[Amount_sold]"].Value = _amountSold;
Cmd.Parameters["@[Unit_Price]"].Value = _unitPrice;
Cmd.Parameters["@Total_Price"].Value = _totalPrice;
Cmd.ExecuteNonQuery();
}
为此:
int RecordToAdd = _product_Id.Count;
for (int i = 0; i < RecordToAdd; i++)
{
Cmd.Parameters["@customer_id"].Value = _customer_Id;
Cmd.Parameters["@Employee_id"].Value = _employee_Id;
Cmd.Parameters["@Product_id"].Value = _product_Id[i];
Cmd.Parameters["@[Date]"].Value = _date;
Cmd.Parameters["@[Amount_sold]"].Value = _amountSold[i];
Cmd.Parameters["@[Unit_Price]"].Value = _unitPrice[i];
Cmd.Parameters["@Total_Price"].Value = _totalPrice[i];
Cmd.ExecuteNonQuery();
}
请注意,在第二个块中,我使用循环的迭代器来索引我每次插入的列表中的项目。
编辑:此外,您构建的 connection_string 看起来不正确。您可能需要查看并更正任何错误
我正在尝试将一些列表插入我的数据库 (Microsoft),但我遇到了这个 运行 时间错误
Failed to convert parameter value from a List`1 to a Int32.
这是我的代码
public void InsertInventory(DateTime _date, int _customer_Id,
int _employee_Id, List<int> _product_Id,
List<int> _amountSold,
List<int> _unitPrice, List<int> _totalPrice)
{
Connection_String = @"Data Source=MOSTAFA-PC;Initial Catalog="
+ "Sales and Inventory System"
+ ";Integrated Security=TrueData Source=MOSTAFA-PC;Initial Catalog="
+ "Sales and Inventory System"
+ ";Integrated Security=True;";
Query = "insert into Inventory" +
"(Customer_Id,Employee_Id,Product_Id,[Date],[Amount Sold],[Unit Price],[Total Price])" +
"values (@customer_id,@Employee_id,@Product_id,@[Date],@[Amount_Sold],@[Unit_Price],@[Total_Price])";
using (Con = new SqlConnection(Connection_String))
using (Cmd = new SqlCommand(Query, Con))
{
Cmd.Parameters.Add("@customer_id", SqlDbType.Int);
Cmd.Parameters.Add("@Employee_id", SqlDbType.Int);
Cmd.Parameters.Add("@Product_id", SqlDbType.Int);
//Cmd.Parameters.Add("@[Date]", SqlDbType.NVarChar);
Cmd.Parameters.Add("@[Date]", SqlDbType.Date);
Cmd.Parameters.Add("@[Amount_sold]", SqlDbType.Int);
Cmd.Parameters.Add("@[Unit_Price]", SqlDbType.Decimal);
Cmd.Parameters.Add("@Total_Price", SqlDbType.Decimal);
Cmd.Connection = Con;
Con.Open();
int RecordToAdd = _product_Id.Count;
for (int i = 0; i < RecordToAdd; i++)
{
Cmd.Parameters["@customer_id"].Value = _customer_Id;
Cmd.Parameters["@Employee_id"].Value = _employee_Id;
Cmd.Parameters["@Product_id"].Value = _product_Id;
Cmd.Parameters["@[Date]"].Value = _date;
Cmd.Parameters["@[Amount_sold]"].Value = _amountSold;
Cmd.Parameters["@[Unit_Price]"].Value = _unitPrice;
Cmd.Parameters["@Total_Price"].Value = _totalPrice;
Cmd.ExecuteNonQuery();
}
我搜索了网站,但找不到任何有用的或与我的问题类似的东西
我该怎么办?
将 FUNCTION PARAMETERS 中的 "List<>" 更改为 Int32 或 Integer。
改变这个:
int RecordToAdd = _product_Id.Count;
for (int i = 0; i < RecordToAdd; i++)
{
Cmd.Parameters["@customer_id"].Value = _customer_Id;
Cmd.Parameters["@Employee_id"].Value = _employee_Id;
Cmd.Parameters["@Product_id"].Value = _product_Id;
Cmd.Parameters["@[Date]"].Value = _date;
Cmd.Parameters["@[Amount_sold]"].Value = _amountSold;
Cmd.Parameters["@[Unit_Price]"].Value = _unitPrice;
Cmd.Parameters["@Total_Price"].Value = _totalPrice;
Cmd.ExecuteNonQuery();
}
为此:
int RecordToAdd = _product_Id.Count;
for (int i = 0; i < RecordToAdd; i++)
{
Cmd.Parameters["@customer_id"].Value = _customer_Id;
Cmd.Parameters["@Employee_id"].Value = _employee_Id;
Cmd.Parameters["@Product_id"].Value = _product_Id[i];
Cmd.Parameters["@[Date]"].Value = _date;
Cmd.Parameters["@[Amount_sold]"].Value = _amountSold[i];
Cmd.Parameters["@[Unit_Price]"].Value = _unitPrice[i];
Cmd.Parameters["@Total_Price"].Value = _totalPrice[i];
Cmd.ExecuteNonQuery();
}
请注意,在第二个块中,我使用循环的迭代器来索引我每次插入的列表中的项目。
编辑:此外,您构建的 connection_string 看起来不正确。您可能需要查看并更正任何错误