2.后台代码
2.1封装后的sqlHelper
using System;
using System.Collections.Generic;
using System.linq;
using System.Text;
using System.Configuration;
using System.Data.sqlClIEnt;
namespace _04省市联动
{
public class sqlHelper
{
//读取连接字符串
private static Readonly string str = ConfigurationManager.ConnectionStrings["conStr"].ConnectionString;
//三个方法
/// <summary>
/// 此方法可以做增删改
/// </summary>
/// <param name="sql">SQL语句</param>
/// <param name="ps">SQL语句中的参数</param>
/// <returns>返回受影响的行数,int类型</returns>
public static int ExecuteNonquery(string sql,sqlParameter[] ps)
{
//连接数据库
using (sqlConnection con=new sqlConnection(str))
{
using (sqlCommand cmd=new sqlCommand(sql,con))
{
con.open();
if (ps!=null)
{
cmd.Parameters.AddRange(ps);
}
return cmd.ExecuteNonquery();
}
}
}
/// <summary>
/// 该方法用在查询上
/// <returns>返回首行首列</returns>
public static object ExecuteScalar(string sql,sqlParameter[] ps)
{
using (sqlConnection con=new sqlConnection(str))
{
using (sqlCommand cmd=new sqlCommand(sql,con))
{
con.open();
if (ps!=null)
{
cmd.Parameters.AddRange(ps);
}
return cmd.ExecuteScalar();
}
}
}
/// <summary>
/// 该方法用于查询读取数据
/// </summary>
/// <param name="sql">SQL语句</param>
/// <param name="ps">SQL语句中的参数</param>
/// <returns>返回的是sqlDataReader对象,里面有数据</returns>
public static sqlDataReader ExecuteDataReader(string sql,params sqlParameter[] ps)
//Params是C#中的关键字,采用此关键字可以指定参数数目为可变;在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字
{
sqlConnection con=new sqlConnection(str);
using (sqlCommand cmd=new sqlCommand(sql,con))
{
if (ps!=null)
{
cmd.Parameters.AddRange(ps);
}
try
{
con.open();
//此时sqlDataReader不能加using,否则reader对象会被释放掉,无法返回
return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);//返回sqlDataReader对象,并关闭对应的sqlConnection对象
}
catch (Exception ex)
{
con.Close();
con.dispose(); //如果发生异常,手动释放
throw ex;
}
}
}
}
}
2.2主窗体后台代码
namespace _04省市联动
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private int r = 0;
private voID Form1_Load(object sender,EventArgs e)
{
r = 1;
//加载省份信息
LoadAreaByAreAPId(0);
}
//所有省份显示到第一个下拉框中
private voID LoadAreaByAreAPId(int v)
{
List<Area> List=new List<Area>();
List.Add(new Area() {AreaID = -1,Areaname = "---请选择---"});
string sql = "select AreaID,Areaname from TblArea where AreAPId="+v;
using (sqlDataReader reader=sqlHelper.ExecuteDataReader(sql))
{
if (reader.HasRows)
{
while (reader.Read())
{
Area a=new Area();
a.AreaID = Convert.ToInt32(reader["AreaID"]);
a.Areaname = reader["Areaname"].ToString();
List.Add(a);
}
}
}
if (r==1)
{
cbPro.DataSource = List;
cbPro.displayMember = "Areaname";
cbPro.ValueMember = "AreaID";
}
if(r==2)
{
cbCity.DataSource = List;
cbCity.displayMember = "Areaname";
}
}
//当省份下拉框文本改变时,加载对应的城市信息
private voID cbPro_SelectedindexChanged(object sender,EventArgs e)
{
#region 练习用的代码
//if (cbPro.Selectedindex != 0)
//{
// cbCity.Items.Clear();
// //获取当前省份的ID
// int ID = Convert.ToInt32(cbPro.SelectedValue);
// string sql = "select AreaID,Areaname from TblArea where AreAPId=" + ID;
// //List<Area> List = new List<Area>();
// using (sqlDataReader reader = sqlHelper.ExecuteDataReader(sql))
// {
// if (reader.HasRows)
// {
// while (reader.Read())
// {
// Area a = new Area();
// a.AreaID = Convert.ToInt32(reader["AreaID"]);
// a.Areaname = reader["Areaname"].ToString();
// cbCity.Items.Add(a); //重写了Area类的ToString()方法 public overrIDe string ToString()
//否则添加的是类的命名空间 {
return this.Areaname;
}
// }
// }
// }
//}
#endregion
#region 简化写法,使用r变量判断事件
r = 2;
if (cbPro.Selectedindex != 0)
{
int ID = Convert.ToInt32(cbPro.SelectedValue);
LoadAreaByAreAPId(ID);
}
#endregion
}
}
}
欢迎关注趣味CSharp,完整笔记与您分享~~~~~~~~
总结以上是内存溢出为你收集整理的CSharp之使用SqlHelper类 *** 作SqlServer,省市连动全部内容,希望文章能够帮你解决CSharp之使用SqlHelper类 *** 作SqlServer,省市连动所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)