saimanisha Ответов: 1

Как написать запрос для предоставления отношений в разных таблицах с помощью программы C# winforms.


у меня есть три таблицы с именами register, login , lostpassword..когда я вставляю данные в таблицы они работают но столбец с именем regid находится там в трех tables.so, как сохранить связь между таблицами с помощью запроса в программе c#, чтобы автоматически обновлять столбец regid и в других таблицах.как я могу написать запрос?

Что я уже пробовал:

string s = "insert into REGISTER(EMAILID,USER_NAME,PASSWORD,MBLE_NUM,QUESTION1,ANSWER,QUESTION2,ANSWER2)VALUES(@EMAILID, @USER_NAME,@PASSWORD,@MBLE_NUM,@QUESTION1,@ANSWER,@QUESTION2,@ANSWER2)";
SqlCommand cmd = new SqlCommand(s, con);
cmd.Parameters.AddWithValue("@EMAILID", textBox1.Text);
cmd.Parameters.AddWithValue("@USER_NAME", textBox2.Text);
cmd.Parameters.AddWithValue("@PASSWORD", textBox3.Text);
cmd.Parameters.AddWithValue("@MBLE_NUM", textBox4.Text);
cmd.Parameters.AddWithValue("@QUESTION1", comboBox1.Text);
cmd.Parameters.AddWithValue("@ANSWER", textBox5.Text);
cmd.Parameters.AddWithValue("@QUESTION2", comboBox2.Text);
cmd.Parameters.AddWithValue("@ANSWER2", textBox6.Text);

string strng = "insert into LOGIN(USER_NAME,PASSWORD)VALUES(@USER_NAME,@PASSWORD)";
SqlCommand cm = new SqlCommand(strng, con);
cm.Parameters.AddWithValue("@USER_NAME", textBox2.Text);
cm.Parameters.AddWithValue("@PASSWORD", textBox3.Text);

string sg = "insert into RESET_MY_PASSWORD(EMAIL_ID,QUESTION1,ANSWER,QUESTION2,ANSWER2)VALUES(@EMAIL_ID,@QUESTION1,@ANSWER,@QUESTION2,@ANSWER2)";
SqlCommand sq = new SqlCommand(sg, con);
sq.Parameters.AddWithValue("@EMAIL_ID", textBox1.Text);
sq.Parameters.AddWithValue("@QUESTION1", comboBox1.Text);
sq.Parameters.AddWithValue("@ANSWER", textBox5.Text);
sq.Parameters.AddWithValue("@QUESTION2", comboBox2.Text);
sq.Parameters.AddWithValue("@ANSWER2", textBox6.Text);

cmd.ExecuteNonQuery();
cm.ExecuteNonQuery();
sq.ExecuteNonQuery();
this.Close();

Maciej Los

Извините, я вас не понимаю...

1 Ответов

Рейтинг:
10

kosmas kafataridis

Привет
В вашем случае я бы использовал try and transaction. Если regid регистрации таблицы указан как identity, то

try
            {
                SqlTransaction strns = con.BeginTransaction();
                try
                {

                    SqlCommand cmd = new SqlCommand("insert into REGISTER(EMAILID,USER_NAME,PASSWORD,MBLE_NUM,QUESTION1,ANSWER,QUESTION2,ANSWER2)VALUES(@EMAILID, @USER_NAME,@PASSWORD,@MBLE_NUM,@QUESTION1,@ANSWER,@QUESTION2,@ANSWER2); SELECT SCOPE_IDENTITY()", con);
                    cmd.Transaction = strns;
                    cmd.Parameters.AddWithValue("@EMAILID", textBox1.Text);
                    cmd.Parameters.AddWithValue("@USER_NAME", textBox2.Text);
                    cmd.Parameters.AddWithValue("@PASSWORD", textBox3.Text);
                    cmd.Parameters.AddWithValue("@MBLE_NUM", textBox4.Text);
                    cmd.Parameters.AddWithValue("@QUESTION1", comboBox1.Text);
                    cmd.Parameters.AddWithValue("@ANSWER", textBox5.Text);
                    cmd.Parameters.AddWithValue("@QUESTION2", comboBox2.Text);
                    cmd.Parameters.AddWithValue("@ANSWER2", textBox6.Text);
                    Int64 regid = (Int64)cmd.ExecuteScalar();
                    cmd.CommandText = "insert into LOGIN(regid, USER_NAME,PASSWORD)VALUES(@regid, @USER_NAME,@PASSWORD)";
                    cmd.Parameters.Clear();
                    cmd.Parameters.AddWithValue("@regid", regid);
                    cmd.Parameters.AddWithValue("@USER_NAME", textBox2.Text);
                    cmd.Parameters.AddWithValue("@PASSWORD", textBox3.Text);
                    cmd.ExecuteNonQuery();
                    cmd.CommandText = "insert into RESET_MY_PASSWORD(regid, EMAIL_ID,QUESTION1,ANSWER,QUESTION2,ANSWER2)VALUES(@regid, @EMAIL_ID,@QUESTION1,@ANSWER,@QUESTION2,@ANSWER2)";
                    cmd.Parameters.Clear();
                    cmd.Transaction = strns;
                    cmd.Parameters.AddWithValue("@regid", regid);
                    cmd.Parameters.AddWithValue("@EMAIL_ID", textBox1.Text);
                    cmd.Parameters.AddWithValue("@QUESTION1", comboBox1.Text);
                    cmd.Parameters.AddWithValue("@ANSWER", textBox5.Text);
                    cmd.Parameters.AddWithValue("@QUESTION2", comboBox2.Text);
                    cmd.Parameters.AddWithValue("@ANSWER2", textBox6.Text);
                    cmd.ExecuteNonQuery();
                    cmd.Dispose();
                    strns.Commit();
                }
                catch (Exception)
                {
                    strns.Rollback();
                    throw;
                }
            }
            catch (Exception ex)
            {

                System.Windows.Forms.MessageBox.Show(ex.Message);
            }