现在选座模块已经做完了,现在遇到的问题是无论座位是否售出,都可购票,希望达到的效果是,当座位售出时,点击订票按钮提示票已售出。数据库设计座位是给每个座位分别用1-30来表示,然后设计了一个state值来表示座位是否为空(1为售出。0为空)图片不知为何上传不了,座位表一共3列 第一列是filmid 电影编号(和电影信息表的filmid相关联),第二列是num 表示每个座位的数字(1-30)第三列是state 表示座位的装态(1和0) |
|
5分 |
不就是if判断吗
if不会用? |
10分 |
给我的订票按钮设置一个条件,当state=1时 提示“改座位已有用户
在点击的时候,根据位置编号取查找对应的状态,如果已经是1了,提示,这个还要什么帮助啊 if(bll.CheckState(12)) { //这个座位还没卖 } else { //这个座位已经被卖掉了 } |
10分 |
不知道是不是楼主想的有点复杂了?我觉得可能是这样
if(判断给座位的state是否为0){进行售出操作}else{messagebox.show("该座位已经售出,请选择其他座位!");} |
if我知道怎么判断,我现在这么写程序运行不对
string sql_1 = "select * from seats where filmid=""" + UserHelper.Id+ """"; dataAdapter = new SqlDataAdapter(sql_1, DBHelper.conn); DataSet dataset_1 = new DataSet(); dataAdapter.Fill(dataset_1, "seats"); DataTable dt = dataset_1.Tables["seats"]; if (dt.Rows.Count > 0) { foreach (DataRow dr in dt.Rows) { if (dr["state"].ToString() == "1") { foreach (Button b1 in groupBox1.Controls) { if (b1.Text == dr["num"].ToString()) { //提示无法选座 } else{ //打开} |
|
15分 |
你需要加锁,因为可能是多线程的,后者会覆盖前者。
其次的逻辑自己解决吧。没什么难的了。 可以考虑行级锁 大体逻辑入下 传入座位ID 根据座位ID获取数据库座位的那一条数据。 然后在判断当前的状态 如果符合状态返回可购买,否则不可购买。 |