C# 如何避免插入查询时主键自动递增?
首先,当有许多项目时,我允许用户在组合框中键入以快速搜索。我想知道如果用户意外按下一个额外的字母,我是否可以停止insert查询,它将导致null,我有C# 如何避免插入查询时主键自动递增?,c#,sql-server,C#,Sql Server,首先,当有许多项目时,我允许用户在组合框中键入以快速搜索。我想知道如果用户意外按下一个额外的字母,我是否可以停止insert查询,它将导致null,我有try catch块,但它只显示错误消息,但主键跳过一个数字 选择要填充的项目组合框 private void GetProjectID() { newConnection.ConnectionM(); SqlCommand cmd = SqlConnectionOLTP.cn.CreateCommand(); cmd.C
try catch
块,但它只显示错误消息,但主键跳过一个数字
选择要填充的项目组合框
private void GetProjectID()
{
newConnection.ConnectionM();
SqlCommand cmd = SqlConnectionOLTP.cn.CreateCommand();
cmd.CommandText = "Select * from Project where ProjectName='" + comboBoxProjectTitle.Text + "' ";
try
{
SqlDataReader reader = cmd.ExecuteReader();
while(reader.Read())
{
ProjectID = reader.GetInt32(0);
}
reader.Close();
SqlConnectionOLTP.cn.Close();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
插入到数据库:
SqlCommand cmd = SqlConnectionOLTP.cn.CreateCommand();
cmd.CommandText = "Insert into Cost(ProjectID,PropertyID,CostCategoryID,EstimatedAmount) values ('" + ProjectID + "','" + PropertyID + "','" + CostCatID + "'," + "'" + textBoxAmount.Text + "') ";
cmd.ExecuteNonQuery();
SqlConnectionOLTP.cn.Close();
MessageBox.Show("Saved");
SET IDENTITY\u INSERT ON
--使用名称在表中插入
将标识设置为“插入”禁用
在SSM上运行此代码,即sql server management studio
ALTER TABLE [Project] DROP ProjectID
SET IDENTITY_INSERT <Project> OFF
ALTER TABLE[Project]DROP ProjectID
将标识设置为“插入”禁用
严肃地说:永远不要连接输入来生成SQL;这就是“数据库101”-或者至少是“105”(永远是OWASP#1(“A1”)。请使用参数。“但主键跳过一个数字”-即。。。这不是问题;您不应该期望主键都是连续的,在我看来,试图“修复”这个问题是一个非常糟糕的想法——这是解决错误的问题;这里的实际问题是什么?
ALTER TABLE [Project] DROP ProjectID
SET IDENTITY_INSERT <Project> OFF