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航班查询及订阅系统就差不多了。(可能会有一点小细节的报错,大家多注意!)