sawMedlem sedan mars 20011 880 inlägg Finns det ett defaultvärde som man kan sätta in i en tabell i mysql?
Orsak till frågan:
I tabellen t_quick_quize finns följande fält:
id, quize
i tabellen t_answer finns följande fält:
a_id(räknare),
id(skall vara samma id som id i tabellen t_quick_quize,
vyes,vno, vdontknow(alla är int).
När jag lägger in en ny fråga i t_quick_quize och sedan skall visa upp det, så flir det fel om inte fälten vyes,vno, vdontknow har några värden.
Min lösning är, om man kan lägga in ett defaultvärde i de tre fälten (t ex 1).
Plan b är att göra en insert, kan man isåfall göra denna insert i ett steg?
Jag har läst om LAST_INSERT_ID() men jag är osäker på hur jag skall kunna använda den i detta fallet.
Tacksam för tips. :stud
@ndersMedlem sedan juni 200032 969 inlägg Du kan sätta defaultvärden i fälten. Vad är problemet?
sawMedlem sedan mars 20011 880 inlägg Hej @nders, jo om jag inte har några värden i välten så fördärvas applikationen. Hur sätter jag in defaultvärden?
Jag sitter just nu i phpMyAdmin men jag hittar inte var jag skall kunna sätta in det, kanske fel applikation?
sawMedlem sedan mars 20011 880 inlägg Jag trar att jag hittade det, i MySql Administrator..
@ndersMedlem sedan juni 200032 969 inlägg Det ska helt klart gå att göra i phpmyadmin också.
sawMedlem sedan mars 20011 880 inlägg Ojojoj.
Nu visar det sig att jag inte har tänkt helt klart.
//min insert i t_quick_quize
INSERT INTO t_quick_quize (quize) VALUES (@quize)
//här måste jag få tag på det id som skapas för att göra en insert i t_answer
INSERT INTO t_answer (id) VALUES ( ?)<---här skall ju id:t in
Då kommer två frågor:
- hur får jag lätast fram det id som skapas i t_quick_quize ?
- kan jag köra detta i samma sql?
om jag inte gör detta kommer problemen när jag kör
sql = "SELECT
t_answer.a_id,
t_quick_quize.id,
t_answer.vyes,
t_answer.vno,
t_answer.vdontKnow,
t_quick_quize.Quize " +
"FROM
t_answer
INNER JOIN
t_quick_quize
ON
t_answer.id = t_quick_quize.Id
WHERE t_quick_quize.id=@id";
sawMedlem sedan mars 20011 880 inlägg Japp nu har det lyckats.
Jag visar det här ifall någon annan undra.
Koden är kanske inte den mest optimala men den fungerar
int newID = 0;
sql = "INSERT INTO t_quick_quize (quize) VALUES
(@quize);SELECT id FROM t_quick_quize WHERE id=last_insert_id()";
MySqlCommand cmd = new MySqlCommand(sql, DBConn);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@quize", txtInfo.Text);
DBConn.Open();
MySqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
newID =Convert.ToInt32(rdr["id"].ToString());
}
DBConn.Close();
Lifo.Text = newID.ToString();
sql = " INSERT INTO t_answer( id ) VALUES ( @id)";
cmd = new MySqlCommand(sql, DBConn);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@id", newID);
DBConn.Open();
cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
@ndersMedlem sedan juni 200032 969 inlägg Just det, jag glömde att du inte använde php. :)
Bra att du visade din lösning! (y)