webForumDet fria alternativet

last_insert_id()

3 svar · 333 visningar · startad av aleborg

aleborgMedlem sedan jan. 20013 341 inlägg
#1

Hur gör jag för att plocka ut den nyss inlagda postens ID i C#/MySQL?

har provat med det här:

	OdbcConnection conn = new OdbcConnection(connectionString);			
	OdbcCommand cmdS = new OdbcCommand(contactsSqlStr.ToString(), conn);
	OdbcCommand cmdT = new OdbcCommand("select last_insert_id() as weee", conn);
	conn.Open();
		cmdS.ExecuteReader();
		OdbcDataReader rS = cmdT.ExecuteReader();
		string cid= rS["weee"].ToString();
	rS3.Close();
	conn.Close();
	Response.Write(cid);

Men det går inte att köra två commandon på en connection :(

icaaqMedlem sedan okt. 20005 273 inlägg
#2

Så här har jag gjort:

[red]
private void btn_submit_Click(object sender, System.Web.UI.ImageClickEventArgs e)
		{
			string OrderNumber = "";
			string SqlStatement = "INSERT INTO customers(firstname, lastname, phone)VALUES('"+ firstname.Text +"', '"+ lastname.Text +"', '"+ phone.Text +"')";
			string SqlStatementToRetrive = "SELECT @@IDENTITY as pkid";
			OdbcConnection Connection = new OdbcConnection("driver={MySQL ODBC 3.51 Driver};server=localhost;database=catering;uid=root;pwd=sa");
			try
			{
				Connection.Open();
				OdbcCommand Command = new OdbcCommand(SqlStatement, Connection);
				Command.CommandType = CommandType.Text;
				Command.ExecuteNonQuery();
				Command.CommandText = SqlStatementToRetrive;
				OdbcDataReader DataReader = Command.ExecuteReader();
				if(DataReader.Read())
				{
					OrderNumber = DataReader["pkid"].ToString();
				}
			}
			finally
			{
				Connection.Close();
			}[/red]

Mvh icaaq

PatrikBMedlem sedan mars 20002 836 inlägg
#3

Testa med denna kod:

	OdbcConnection conn = new OdbcConnection(connectionString);			
	OdbcCommand cmdS = new OdbcCommand(contactsSqlStr.ToString(), conn);
	OdbcCommand cmdT = new OdbcCommand("select last_insert_id() as weee [b]FROM MyTable[/b]", conn);
	conn.Open();
		cmdS.ExecuteReader();
		// OdbcDataReader rS = cmdT.ExecuteReader();
		// string cid= rS["weee"].ToString();
	
		int cid = cmdT.ExecuteScalar()

	// rS3.Close();
	conn.Close();
	Response.Write(cid.ToString);

Eftersom det endast är ett värde som kommer tillbaka från last_insert_id() så är det bättre att köra ExecuteScalar än att skapa en DataReader för endamålet

cya,
/PatrikB

icaaqMedlem sedan okt. 20005 273 inlägg
#4

japp du har så rätt så....tack PatrikB

Mvh icaaq

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)