省市选择及导出作业
SqlConnection:SqlConnection 对象表示单个会话中对 SQL Server 数据源。 在客户端/服务器数据库系统中,它等效于一个到服务器的网络连接。
sqlCommand:在用SqlConnection创建连接后开辟一个sqlcommand创建一个用于操作数据库的命名空间,里边写SQL server命令
sqlDateReader:写在sqlCommand写返回的是只读数据集
//数据库文件需单独设置
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.IO;//加粗的类库要自己添加上去
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
string connStr = ConfigurationManager.ConnectionStrings["sqlConn"].ConnectionString;
using (SqlConnection conn = new SqlConnection(connStr)) {
using (SqlCommand cmd = conn.CreateCommand()) {
conn.Open();
cmd.CommandText = "select id,name,fid from lianxisan where fid=0";
using (SqlDataReader reader = cmd.ExecuteReader()) {
while (reader.Read()) {
AreaInfo areaInfo = new AreaInfo(); //reader后面跟的是数据库中列的值
areaInfo.AreaName = reader["name"].ToString();
areaInfo.AreaPid = int.Parse(reader["fid"].ToString());
areaInfo.AreaId = int.Parse(reader["id"].ToString());
this.comboBox1.Items.Add(areaInfo);
}
}//end sqlDateReader
}//End SqlCommand
}//End sqlConnection
this.comboBox1.SelectedIndex = 0;
}
//SelectedIndexChanged当combeBox的值发生改变时随之改变
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)//在界面选择不同的combobox的值时改变
{
AreaInfo provinceAreaInfo = this.comboBox1.SelectedItem as AreaInfo;
//判断是否拿到的省份为空
if (provinceAreaInfo == null) {
return;
}
//根据省份Id获取所有的城市信息
string connStr = ConfigurationManager.ConnectionStrings["sqlConn"].ConnectionString;
using (SqlConnection conn = new SqlConnection(connStr))
{
using (SqlCommand cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = "select id,name,fid from lianxisan where fid=" + provinceAreaInfo.AreaId;
using (SqlDataReader reader = cmd.ExecuteReader())
{
this.comboBox2.Items.Clear();//在每一次更改省份的时候清空上一个省的值不清空的话就会变成累加
while (reader.Read())
{
AreaInfo areaInfo = new AreaInfo(); //reader后面跟的是数据库中列的值
areaInfo.AreaName = reader["name"].ToString();
areaInfo.AreaPid = int.Parse(reader["fid"].ToString());
areaInfo.AreaId = int.Parse(reader["id"].ToString());
this.comboBox2.Items.Add(areaInfo);
}
}//end sqlDateReader
}//End SqlCommand
}//End sqlConnection
this.comboBox2.SelectedIndex = 0;
}
private void button1_Click(object sender, EventArgs e)
{
#region 选择保存的文件
string filename = string.Empty;
//让用户选择文件保存路径
using (SaveFileDialog sfd = new SaveFileDialog()) {
if (sfd.ShowDialog() != DialogResult.OK) {
return;
}
filename=sfd.FileName;
}
#endregion
//查询数据,写入数据
string connStr = ConfigurationManager.ConnectionStrings["sqlConn"].ConnectionString;
using (SqlConnection conn = new SqlConnection(connStr)) {
using (SqlCommand cmd = conn.CreateCommand()) {
conn.Open();
cmd.CommandText = "select id,name,fid from lianxisan";
using (SqlDataReader reader = cmd.ExecuteReader())
{
string templine = string.Empty;
using (StreamWriter write = new StreamWriter(filename)) {
while (reader.Read()) {
templine = reader["id"] + "," + reader["name"] + "," + reader["fid"];
write.WriteLine(templine);
}
}
}
}
}
}
}
}
StreamWriter :采用utf-8的编码生成文本文件
Read():读取下一条记录,起始默认为第一条记录之前,每执行一次,移动指针到下一行,如果存在返回true,否则返回flash
//里边的数据库的登录名和密码,账户 数据库,表名,字段名需修改,
//App.cofing中的代码
//新建类中的代码
public class AreaInfo
{
public string AreaName { get; set; }
public int AreaPid { get; set; }
public int AreaId { get; set; }
public override string ToString()
{
return AreaName;
}
}