c# - 从主键获取 SQL 外键列值 asp.net c#

标签 c# mysql asp.net sql-server database

我有两张表,一张是教师表,另一张是调度表。教师表有主键 TID 和其他列。 Scheduling表有主键、其他列和外键TID。

现在,我在一页中插入教师数据。就插入成功了。我必须在其他页面中插入数据来安排老师和学生的类(class)。我的问题是这样的,我无法将教师的 pk 值插入到排程表的 fk 列中。

这是我到目前为止所做的事情。

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

namespace E_Tutor_Manager
{
    public partial class ScheduleClass : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            {
                string connc = @"Data Source=KHAWAR-PC.\SQLEXPRESS;Initial Catalog=ETManager;Integrated Security=True";
                SqlConnection con = new SqlConnection(connc);
                string query = "SELECT Username FROM Teachers";
                SqlCommand cmd = new SqlCommand(query, con);
                cmd.Connection.Open();
                SqlDataReader ddlValues;
                ddlValues = cmd.ExecuteReader();
                TUName.DataSource = ddlValues;
                TUName.DataValueField = "Username";
                TUName.DataTextField = "Username";
                TUName.DataBind();
                cmd.Connection.Close();
                cmd.Connection.Dispose();
            }

            if (!IsPostBack)
            {
                if (Session["New"] != null)
                {
                    welcome.Text += Session["New"].ToString();
                }
                else
                    Response.Redirect("Login.aspx");
            }
        }

        protected void Button1_Schedule_Click(object sender, EventArgs e)
        {

            try
            {
                {
                    string connc = @"Data Source=KHAWAR-PC.\SQLEXPRESS;Initial Catalog=ETManager;Integrated Security=True";
                    SqlConnection con = new SqlConnection(connc);
                    con.Open();

                    string query = "SELECT * FROM Teachers WHERE StartTime = @StartTime";
                    string query1 = "INSERT INTO Schedules(Grade,Subjects,STime,TID) VALUES ('" + txtGrd.Text + "','" + Sbj.SelectedValue + "','" + txtTime.Value + "')";
                    SqlCommand sql = new SqlCommand(query1, con);
                    SqlCommand sql1 = new SqlCommand(query, con);
                    sql.ExecuteNonQuery();
                    var cmd = new SqlCommand(query, con);
                    cmd.Parameters.AddWithValue("@StartTime", txtTime.Value);
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    DataTable dt = new DataTable();
                    da.Fill(dt);
                    if (dt.Rows.Count > 0)
                    {
                        labelmsg.Text = "Sorry!!! This teacher is not available at this time. Please select the other teacher";
                    }
                    else
                    {
                        labelmsg.Text = "Class Scheduled Succesfully!!!";
                    }
                    con.Close();
                }        
            }
            catch (Exception ee)
            {
                throw (ee);
            }
        }

    }
}

那么有人可以帮助我吗?

最佳答案

试试这个。仅当选择查询仅返回一个值时,这才有效。

string query1 = "INSERT INTO Schedules(Grade,Subjects,STime,TID) VALUES ('" + txtGrd.Text + "','" + Sbj.SelectedValue + "','" + txtTime.Value + "',(SELECT TID FROM Teachers WHERE StartTime = @StartTime))";

关于c# - 从主键获取 SQL 外键列值 asp.net c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32560872/

相关文章:

mysql - 如何在像 MySQL 这样的 RDBMS 中存储双向关系?

mysql - 使用 MySQL,如何计算一个选项中的成员而不是另一个选项中的成员?

javascript - 需要像 Firefox 的调试器一样获取 HTML Element 的 Layout 信息

c# - PortalModuleBase 的 DotNetNuke 替代品

asp.net - 如何使多行的 TextBox 控件无法调整大小?

c# - Entity Framework Core - 使用 Npgsql 提供程序迁移失败

c# - 从单元格公式调用在 Excel 2007 中用 C# 编写的方法

c# - Objective-C 等效于 C# 只读变量

c# - 访问被拒绝 - 尝试从地址栏的句柄获取 url(文本)时

php - 如何在全日历议程周 View 上呈现事件-Symfony 3