【发布时间】:2017-05-19 16:05:13
【问题描述】:
我正在尝试构建一个测验应用程序。我创建了两个表:
CREATE TABLE [dbo].[Answers] (
[AID] INT NOT NULL,
[QID] INT NOT NULL,
[Answer] NVARCHAR (200) NOT NULL,
[CorrectAnswer] NVARCHAR (200) NULL,
PRIMARY KEY CLUSTERED ([AID] ASC),
CONSTRAINT [FK_Answers_Question] FOREIGN KEY ([QID]) REFERENCES [dbo].
[Question] ([QID])
);
CREATE TABLE [dbo].[Question] (
[QID] INT IDENTITY (1, 1) NOT NULL,
[Question] NVARCHAR (200) NOT NULL,
PRIMARY KEY CLUSTERED ([QID] ASC)
);
在这里,QID 是自动生成和递增的。 答案表包含 AID 作为主键和 QID 作为外键。 现在我的问题是我应该自动生成和增加 Answers.QID 还是应该单独设置?而且我还希望 Answers.AID 增加到 4(带有 4 个选项的多项选择题)。 像这样:
Answers Table
AID | QID | Answer
1 | 1 | Scripting Language
2 | 1 | Programming Language
3 | 1 | MarkUp Language
4 | 1 | Network Protocol
Question Table
QID | Question
1 | What is HTML?
所以每当我尝试在 Answer 表中插入答案时,它应该检查 Question.QID = Answers.QID。如果为真,则从 1 到 4 分配 Answer.AID 并输入答案。
所有这一切都由管理员管理,因此我创建了一个 Web 表单 AddQuestion.aspx,当管理员单击“添加”按钮时可以在其中添加问题,它会重定向到管理员可以保存和上传答案的 AddAnswer.aspx。
AddQuestion.aspx
public partial class AddQuestion : System.Web.UI.Page
{
SqlCommand command;
SqlConnection connection;
protected void ButtonAdd_Click(object sender, EventArgs e)
{
connection = new SqlConnection(ConfigurationManager.ConnectionStrings["TheQuizConnectionString"].ConnectionString);
connection.Open();
string addQuestion = "insert into Question(Question) values(@Ques)";
command = new SqlCommand(addQuestion, connection);
//command.Parameters.AddWithValue("@Qid", TextBoxQid.Text);
command.Parameters.AddWithValue("@Ques", TextBoxQuestion.Text);
command.ExecuteNonQuery();
Response.Redirect("AddAnswer.aspx");
connection.Close();
}
}
AddAnswer.aspx
public partial class AddAnswer : System.Web.UI.Page
{
SqlCommand command;
SqlConnection connection;
protected void ButtonAdd_Click(object sender, EventArgs e)
{
Response.Redirect("AddQuestion.aspx");
}
public void CheckQid()
{
connection = new SqlConnection(ConfigurationManager.ConnectionStrings["TheQuizConnectionString"].ConnectionString);
connection.Open();
string checkQid = "select count(QID) from Question";
using (command = new SqlCommand(checkQid, connection))
}
protected void ButtonSave_Click(object sender, EventArgs e)
{
connection = new SqlConnection(ConfigurationManager.ConnectionStrings["TheQuizConnectionString"].ConnectionString);
connection.Open();
string addAnswer = "insert into Answers(Answer) values(@Answer)";
command = new SqlCommand(addAnswer, connection);
//command.Parameters.AddWithValue("@Aid", TextBoxAid.Text);
//command.Parameters.AddWithValue("@Qid", TextBoxQid.Text);
command.Parameters.AddWithValue("@Answer", TextBoxAnswer.Text);
command.ExecuteNonQuery();
Response.Redirect("AddAnswer.aspx");
}
}
我是 asp.net 和 Visual Studio 的新手。我试图寻找答案,但找不到任何东西。如果有人可以帮助我解决这个问题,我将不胜感激。
谢谢。
【问题讨论】:
-
当你运行
command.ExecuteNonQuery任何错误时会发生什么?还有你在哪里执行这个方法中的实际 sql 查询public void CheckQid() -
我确信它没有 QID 参数
-
@MethodMan 我不知道如何编写 sql 查询,我只是试过这个:更新答案集 QID = (Select QID from Question where Question.QID = Answer.QID) 但它没有用.而且我对 sql 的了解也不多。
-
听起来你应该打开 chrome 并在基本 SQL 教程上进行谷歌搜索。
I don't know is not an excuse这就是为什么会有像 google.com 这样的东西在那里......祝你好运 -
@MethodMan 我已经开始学习了。谢谢。
标签: c# sql asp.net database webforms