I have three tables
Table Customers
:
customerid LastName FirstName Phone
Table class
:
classid numofstud numofstud totalprice
Table Orderlist
:
orderid customerid (FK_order_customer) classid (FK_order_class])
I want to set the last customerid and classid from their tables into orderlist table.I use identity increment for them.
SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["miztahrirtest2DB"].ToString());
SqlCommand cmd = new SqlCommand("insert into customer (firstname,lastname,phone) values (@firstname,@lastname,@phone)", con);
cmd.Parameters.AddWithValue("firstname", firstnametxt.Text);
cmd.Parameters.AddWithValue("lastname", lastnametxt.Text);
cmd.Parameters.AddWithValue("phone", phonetxt.Text);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
SqlCommand cmd2 = new SqlCommand("insert into class (numofstud,numofclass,totalprice) values (@numofstud,@numofclass,@totalprice)", con);
cmd2.Parameters.AddWithValue("numofclass", Session["Numofclass"]);
cmd2.Parameters.AddWithValue("numofstud", Session["Numofstud"]);
cmd2.Parameters.AddWithValue("totalprice", Session["totalprice"]);
con.Open();
cmd2.ExecuteNonQuery();
con.Close();
SqlCommand cmd3 = new SqlCommand("insert into orderlist (customerid,classid) values (SELECT MAX(customerid) FROM customer,SELECT MAX(classid) FROM class)", con);
con.Open();
cmd3.ExecuteNonQuery();
con.Close();
cmd
and cmd2
are working correctly but cmd3
has an error
ncorrect syntax near the keyword 'SELECT'.
Incorrect syntax near the keyword 'SELECT'.
Incorrect syntax near ')'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.SqlClient.SqlException: Incorrect syntax near the keyword 'SELECT'.
Incorrect syntax near the keyword 'SELECT'.
Incorrect syntax near ')'.
Source Error:
Line 48: con.Open();
Line 49: cmd3.ExecuteNonQuery();
Line 50: con.Close();
Line 51:
Source File: c:\Users\Me.Groot\Documents\Visual Studio 2013\WebSites\miztahrirtest2\account.aspx.cs Line: 49
what should I do now?
Change your cmd3 command text to:
insert into orderlist (customerid,classid) SELECT MAX(customerid),MAX(classid) FROM customer, class
or you can use SCOPE_IDENTITY()
to get last identity so your code would be:
SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["miztahrirtest2DB"].ToString());
SqlCommand cmd = new SqlCommand("insert into customer (firstname,lastname,phone) values (@firstname,@lastname,@phone);SELECT SCOPE_IDENTITY()", con);
cmd.Parameters.AddWithValue("firstname", firstnametxt.Text);
cmd.Parameters.AddWithValue("lastname", lastnametxt.Text);
cmd.Parameters.AddWithValue("phone", phonetxt.Text);
con.Open();
Int32 customerID = (Int32) cmd.ExecuteScalar();
con.Close();
SqlCommand cmd2 = new SqlCommand("insert into class (numofstud,numofclass,totalprice) values (@numofstud,@numofclass,@totalprice);SELECT SCOPE_IDENTITY()", con);
cmd2.Parameters.AddWithValue("numofclass", Session["Numofclass"]);
cmd2.Parameters.AddWithValue("numofstud", Session["Numofstud"]);
cmd2.Parameters.AddWithValue("totalprice", Session["totalprice"]);
con.Open();
Int32 classID = (Int32) cmd2.ExecuteScalar();
con.Close();
SqlCommand cmd3 = new SqlCommand("insert into orderlist (customerid,classid) values (@customerId,@classId)", con);
cmd3.Parameters.AddWithValue("customerId", customerID );
cmd3.Parameters.AddWithValue("classId",classID );
con.Open();
cmd3.ExecuteNonQuery();
con.Close();
Your select
statement is incorrect, try this:
SELECT
MAX(cust.customerid),
MAX(cls.classid)
FROM customer cust, class cls
要从表中获取last value
,可以使用last()
函数
SELECT LAST(column_name) FROM table_name
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.