我已经尝试了几个小时,但在这个 sql 查询中找不到错误,出现异常“<”
Connection con = new OrderManager.Connection();
SqlCommand cmd = new SqlCommand();
string query = @"INSERT INTO [MasterDatabase].[dbo].[Neworder]
([OrderID]
,[Date]
,[Customer_Name]
,[Quality]
,[Color]
,[PCs]
,[Cutting]
,[TotalYards])
VALUES
(<OrderID, nvarchar(50),>
,<Date, varchar(25),>
,<Customer_Name, varchar(25),>
,<Quality, varchar(25),>
,<Color, varchar(25),>
,<PCs, varchar(25),>
,<Cutting, varchar(25),>
,<TotalYards, varchar(25),>)";
cmd = new SqlCommand(query, con.ActiveCon());
cmd.Parameters.AddWithValue("@OrderID", TxtBox_OrderID.Text);
cmd.Parameters.AddWithValue("@Date", dateTimePicker1.Value.ToString());
cmd.Parameters.AddWithValue("@Customer_Name", txtbox_CusName.Text);
cmd.Parameters.AddWithValue("@Quality", combo_Quality.Text);
cmd.Parameters.AddWithValue("@Color", combo_Color.Text);
cmd.Parameters.AddWithValue("@PCs", updown_PCs.Text);
cmd.Parameters.AddWithValue("@Cutting", combo_Cutting.Text);
cmd.Parameters.AddWithValue("@TotalYards", "Total Yards");
Run Code Online (Sandbox Code Playgroud)
cmd.ExecuteNonQuery(); // 这是抛出错误的地方
MessageBox.Show("Record Inserted", "Record Entered Successfully!");
Run Code Online (Sandbox Code Playgroud)
我也尝试使用这个但同样的问题。
string query = @"INSERT INTO [MasterDatabase].[dbo].[Neworder]
(OrderID)
,(Date)
,(Customer_Name)
,(Quality)
,(Color)
,(PCs)
,(Cutting)
,(TotalYards)
VALUES
(@OrderID)
,(@Date)
,(@Customer_Name)
,(@Quality)
,(@Color)
,(@PCs)
,(@Cutting)
,(@TotalYards)";
Run Code Online (Sandbox Code Playgroud)
看看上面的代码,不知道我错过了什么。
Stackoverflow 警告我回复过多,因此我将回复改为答案。
当您请求 SQL MGMT STUDIO 提供 INSERT 语句的 SQL 时,您使用了 SQL MGMT STUDIO 提供的模板。它提供的模板不是实际的插入语句,而是帮助您创建实际插入的指南。我提供的应该是基于您在 c# 中提供的参数的“真实”插入语句。
此外,VALUES 部分中的所有参数都应括在括号内,而不是单独的每个参数。
string query = @"INSERT INTO [MasterDatabase].[dbo].[Neworder]
([OrderID]
,[Date]
,[Customer_Name]
,[Quality]
,[Color]
,[PCs]
,[Cutting]
,[TotalYards])
VALUES
(@OrderID
,@Date
,@Customer_Name
,@Quality
,@Color
,@PCs
,@Cutting
,@TotalYards)";
Run Code Online (Sandbox Code Playgroud)
评论和其他答案中提出的另一点是 ORDERID列...因为它被定义为<OrderID, nvarchar(50)>,强烈建议更改表设计,以便该列是用户将没有机会修改的AUTO_INCREMENTED IDENTITY列。
例如,TSQL 定义应如下所示:
[OrderId] [int] IDENTITY(1,1) NOT NULL
Run Code Online (Sandbox Code Playgroud)