传智播客视频学习中“省市选择”程序
最近借助于杨中科老师的ADO.net视频进行数据库学习,感觉收获很大,思路都比较清晰。在杨老师的视频中,有一个任务,是关于省市选择的,我自己做了一个,不是很完善,但是凑活算完成了,哈哈~~下面具体讲一下怎么制作的。
首先新建一个WinForm,然后建一个数据库服务 ProCity.mdf。在Form1窗体上添加两个组合框ComboBox控件,设置其DropDown的属性为DropDownList。如下图所示:
然后是将需要用到的数据插入到数据库中,数据源在网址http://www.programfan.com/blog/article.asp?id=28128。具体的插入过程,可以参考我的一篇博客 Visual Studio 2008中如何使用SQL建表 。
接下来,对与实际的编程。首先在Program.cs中插入万能代码,视频中有的。
在窗体加载的时候,将省的数据导入到省得组合框中。代码如下:
Form1_Load
private void Form1_Load(object sender, EventArgs e)
{
string cnn_char = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ProCity.mdf;Integrated Security=True;User Instance=True";
using (SqlConnection conn = new SqlConnection(cnn_char))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "Select * from promary";
using (SqlDataReader read = cmd.ExecuteReader())
{
while (read.Read())
{
string Proname = read.GetString(read.GetOrdinal("proName"));
cboPro.Items.Add(Proname);
}
}
}
}
}
ProCity.mdf只是我自己建的数据库服务的名称,这个需要根据自己的实际情况改。
接下来要写对省的组合框写一个SelectedIndexChanged事件,代码如下:
SelectedIndexChanged
private void cboPro_SelectedIndexChanged(object sender, EventArgs e)
{
cboCity.Items.Clear();
string cnn_char = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ProCity.mdf;Integrated Security=True;User Instance=True";
using (SqlConnection conn = new SqlConnection(cnn_char))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
int proId;
cmd.CommandText = "Select proID from promary where proName=@name";
cmd.Parameters.Clear();
cmd.Parameters.Add(new SqlParameter("name", cboPro.SelectedItem));
using (SqlDataReader read = cmd.ExecuteReader())
{
read.Read();
proId =read.GetInt32(read.GetOrdinal("proID"));
}
cmd.CommandText = "Select cityName from city where proID=@id";
cmd.Parameters.Clear();
cmd.Parameters.Add(new SqlParameter("id", proId));
using (SqlDataReader read = cmd.ExecuteReader())
{
while (read.Read())
{
string cityname =read.GetString(read.GetOrdinal("cityName"));
cboCity.Items.Add(cityname);
}
}
}
运行之后,就能进行选择了。有些具体的细节,可能没有描述好,表的建立和数据的插入,都是按照前面的一个省市数据库网站上的代码实现的。