我遇到了此错误,因为我想通过对每个电影名称进行计数来打印出同一电影名称中的所有5个不同的评级整数。第一个查询的执行无懈可击,但是由于如下所述的错误,为什么我不能使第二个查询正常工作?
错误:{“列'RatingNum2'不属于表Table。”}
private void EachRating_Click(object sender, EventArgs e)
{
string filename, connectionInfo;
SqlConnection db;
this.listBox1.Items.Clear();
filename = "netflix.mdf";
connectionInfo = String.Format(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=
|DataDirectory|\{0};Integrated Security=True;", filename);
string moviename = this.textBox1.Text;
moviename = moviename.Replace("'", "''");
string five = "5";
string four = "4";
db = new SqlConnection(connectionInfo);
db.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = db;
cmd.CommandText = string.Format(
@"
SELECT MovieName, RatingNum1 FROM Movies
INNER JOIN
(
SELECT MovieID, Count(Rating) as RatingNum1 FROM Reviews
WHERE Rating = 5
GROUP BY MovieID
)TEMP
ON TEMP.MovieID = Movies.MovieID
WHERE MovieName = '{0}';", moviename);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adapter.Fill(ds);
DataTable dt = ds.Tables["TABLE"];
foreach (DataRow row in dt.Rows)
{
string msg = string.Format("{0}: {1}",
five.ToString(),
row["RatingNum1"].ToString());
this.listBox1.Items.Add(msg);
}
SqlCommand cmd2 = new SqlCommand();
cmd2.Connection = db;
cmd2.CommandText = string.Format(
@"
SELECT MovieName, RatingNum2 FROM Movies
INNER JOIN
(
SELECT MovieID, Count(Rating) as RatingNum2 FROM Reviews
WHERE Rating = 4
GROUP BY MovieID
)TEMP
ON TEMP.MovieID = Movies.MovieID
WHERE MovieName = '{0}'", moviename);
SqlDataAdapter adapter2 = new SqlDataAdapter(cmd2);
DataSet ds2 = new DataSet();
adapter.Fill(ds2);
DataTable dt2 = ds2.Tables["TABLE"];
foreach (DataRow row2 in dt2.Rows)
{
string msg = string.Format("{0}: {1}",
four.ToString(),
row2["RatingNum2"].ToString()); //gets the error
this.listBox1.Items.Add(msg);
}
您正在使用第一个适配器填充第二个数据集,因此数据表无法找到列RatingNum2
adapter.Fill(ds2);
应该
adapter2.Fill(ds2);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句