我想将记录插入到sql server 2008表中,使用c#asp.net,列值都声明为“nvarchar”,第一列subid是主键。在我的代码中,我检索最后一个coulmn id,递增它并将其用作新记录的子 ID,当我插入记录时,它不会按顺序存储,而是存储在中间某处。所以下次我尝试检索最后一个 id 列值(虽然我使用“order by”),它给出现有值,当增加时,会给出错误,“重复值,不允许”。这是我检索最后一个 id 值并增加它的代码:
SqlCommand myCommand = new SqlCommand("SELECT TOP 1 subid FROM subjects
ORDER BY subid DESC", con1);
reader = myCommand.ExecuteReader();
if (reader.HasRows == false)
{
Label4.Text = "1";
reader.Close();
}
else
{
while (reader.Read()) // if can read row from database
{
id = reader[0].ToString();
}
int n = Convert.ToInt32(id);
int j = n + 1;
Label4.Text = j.ToString();
我的插入代码是:
SqlDataAdapter da = new SqlDataAdapter("SELECT TOP 1 * FROM subjects ORDER BY
subid DESC", con);
SqlCommandBuilder cb = new SqlCommandBuilder(da);
DataSet ds = new DataSet("subjects");
da.Fill(ds, "subjects");
DataRow row = ds.Tables["subjects"].NewRow();
row["subid"] = Label4.Text;
row["dept"] = (string)Session["deptmnt"];
row["yr"] = DropDownList2.SelectedValue;
row["sem"] = DropDownList3.SelectedValue;
row["subname"] = TextBox1.Text;
row["subcode"] = TextBox2.Text;
ds.Tables["subjects"].Rows.Add(row);
da.Update(ds, "subjects");
Label10.Visible = true;
con.Close();
我如何使值作为最后一行插入,请帮助。我的 subid 具有诸如“IT10001”、“EC10001”之类的值来根据第一个两个字母来识别部门,这就是我使用 varchar 的原因!