System.Data.SqlClient.SqlException:'无效的列名'音乐'。'

时间:2018-04-06 15:43:20

标签: c# asp.net menuitem

我想根据菜单项值显示一个类别(服务),所以当用户点击音乐项目时,它应该从数据库表(ServiceP)填充转发器,其中服务的名称=到菜单项值。

我尝试了这段代码,但收到了错误

  

System.Data.SqlClient.SqlException:'无效的列名'音乐'

这是用户点击菜单项

时的代码
 protected void Menu1_MenuItemClick(object sender, MenuEventArgs e)
 {
     SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\TOSHIBA\Documents\PartyZone.mdf;Integrated Security=True;Connect Timeout=30");
     conn.Open();

     SqlCommand cmd = conn.CreateCommand();
     cmd.CommandType = CommandType.Text;
     cmd.CommandText = "select * from ServiceP where 
     ServiceName = "+e.Item.Value.ToString() ;

     cmd.ExecuteNonQuery();

     DataTable dt = new DataTable();
     SqlDataAdapter da = new SqlDataAdapter(cmd);
     da.Fill(dt);

     d1.DataSource = dt;
     d1.DataBind();

     conn.Close();
} 

1 个答案:

答案 0 :(得分:4)

假设你确实有:

cmd.CommandText = "select*from ServiceP where ServiceName="+e.Item.Value.ToString() ;

e.Item.Value"music",那么您需要的是参数来保存要搜索的值,即

cmd.CommandText = "select*from ServiceP where ServiceName=@value";
cmd.Parameters.AddWithValue("@value", e.Item.Value.ToString());

请注意,你也可以扔掉cmd.ExecuteNonQuery(); - 这里没什么用处,意味着你要做两次工作。