1.导入命名空间,并且定义连接对象和命令对象
using System.Data.SqlClient;
//定义连接对象
SqlConnection conn = null; //定义命令对象 SqlCommand cmd = null;
3.定义一个静态的类单独存放连接字符串,等使用连接字符串的时候可以直接用类名.连接语句。
using System;
using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Myflight
{ class DBHeper { public static string constr = "server =.; DataBase =Myflight; Uid =sa; Pwd =******"; }}
4.第一个为显示出发地的方法
/// <summary>
/// 显示出发地方法 /// </summary> private void cboChuSelect() { try { //连接对象和连接字符串 conn = new SqlConnection(DBHeper.constr); //查询字符串 string sql = "select * from CityInfo"; //适配器对象 SqlDataAdapter da = new SqlDataAdapter(sql, conn); //数据集对象 DataSet ds = new DataSet(); //填充数据集 da.Fill(ds); //创建DataRow对象 DataRow dr = ds.Tables[0].NewRow(); //下标减一 dr[0] = -1; //添加新下标 dr[1] = "请选择"; //绑定添加“请选择”的下标 ds.Tables[0].Rows.InsertAt(dr,0); //绑定数据源 cbFilghtCity.DataSource = ds.Tables[0]; //显示值 cbFilghtCity.DisplayMember = "CityName"; //隐藏值 cbFilghtCity.ValueMember = "Id"; } catch (Exception ex) { //异常提示 MessageBox.Show("异常!", ex.Message); } }效果图如下:
5.第二个方法同上!!!(控件名改一下)
6.将数据库中查询出来的数据放到DataGridView中并将其显示
/// <summary>
/// DataGridView显示方法 /// </summary> private void DataGridView() { try { //获取组合框选中的值 int Chu = Convert.ToInt32(cbFilghtCity.SelectedValue); int Mu = Convert.ToInt32(cboflightLand.SelectedValue); //连接对象 conn = new SqlConnection(DBHeper.constr); //定义执行字符串 string sql = "select FlightNo,Airways,LeaveTime,LandTime,Price from airwaysinfo,FlightInfo where airwaysinfo.id=FlightInfo.AirwaysId and FlightInfo.LeaveCity = " + Chu + " and Destination = " + Mu + ""; //创建适配器对象 SqlDataAdapter da = new SqlDataAdapter(sql, conn); //创建数据集对象 DataSet ds = new DataSet(); //填充数据集 da.Fill(ds); //绑定数据源 dgvList.DataSource = ds.Tables[0]; } catch (Exception ex) { //异常提示代码 MessageBox.Show("异常!", ex.Message); } }效果图如下:
7.拿到DataGridView空间中的值,并将它赋值给文本框
/// <summary>
/// 拿值和赋值的方法 /// </summary> private void flightDatails() { //获取用户选中行的集合和获取行的单元格的集合,注意一定要.Value和做相应的转换 string ID = dgvList.SelectedRows[0].Cells[0].Value.ToString(); string Name = dgvList.SelectedRows[0].Cells[1].Value.ToString(); string LeaveTime = dgvList.SelectedRows[0].Cells[2].Value.ToString(); string LandTiem = dgvList.SelectedRows[0].Cells[3].Value.ToString(); double Price =Convert.ToDouble(dgvList.SelectedRows[0].Cells[4].Value); //这是获取出发地和目的地的Text文本。并拿变量接受 string cboChu = cbFilghtCity.Text; string cboMu = cboflightLand.Text;//给相应的文本框赋值
textBox1.Text = ID; textBox2.Text = cboChu; textBox3.Text = LeaveTime; textBox4.Text = Price.ToString(); textBox6.Text = Name; textBox7.Text = cboMu; textBox8.Text = LandTiem; }效果图如下:
、
8.添加到数据库,并判断日期不能小于当前日期和票数不能等于0。
/// <summary>
/// 订阅保存方法 /// </summary> private void insert() { //判断订票的数量是否大于0 if (nudYu.Value > 0) { //判断选中的日期是否大于当前日期,并转换为DateTime类型 if (Convert.ToDateTime(DateTime.Now.ToString()) < Convert.ToDateTime(dtpTiem.Text)) { //连接字符串 conn = new SqlConnection(DBHeper.constr); //打开数据库连接 conn.Open(); //创建随机数对象 Random rd = new Random(); //定义随机数的范围 int count = rd.Next(100000,100000000); try { //定义的SQL语句 string sql = "insert into OrderInfo (OrderId, FlightNo, LeaveDate, Number) values ('"+count.ToString()+"','"+textBox1.Text+"','"+dtpTiem.Value.ToString()+"',"+nudYu.Value.ToString()+")"; //命令对象 cmd = new SqlCommand(sql,conn); //返回结果并用int类型的变量接受 int i = cmd.ExecuteNonQuery(); //判断返回结果是否大于0,大于0就有结果返回,小于0证明没有结果返回 if (i > 0) { //订阅成功后提示 MessageBox.Show("订阅成功!,订单编号为:"+count+"已添加:"+nudYu.Value+"个订单","提示",MessageBoxButtons.OKCancel); } } catch (Exception ex) { //异常提示 MessageBox.Show("出现异常!",ex.Message); } finally { //关闭链接 conn.Close(); }}
else { MessageBox.Show("不可选中当前日期!"); } }}
效果图如下:
整个Myflight航班查询及订阅系统就差不多了。(可能会有一点小细节的报错,大家多注意!)