class SqlHelper

{

//这个是将连接数据库的字符串写到配置文件中的

private static string connStr = ConfigurationManager.ConnectionStrings["dbConnStr"].ConnectionString;

// 我们当然也可以这样写(string sql, SqlParameter[] parameters)不过这样的话每次调用即使没有参数也要写个空参数

//用params 是可变参数,使用它时一定要放到最后面,这样编译器会先匹配前面的参数,还有对应的参数一定要是数组

public static int ExecuteNonQuery(string sql, params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    //foreach (SqlParameter param in parameters)
                    //{
                    //    cmd.Parameters.Add(param);
                    //}  
                    cmd.Parameters.AddRange(parameters);
                    return cmd.ExecuteNonQuery();
                }
            }
        }
        public static object ExecuteScalar(string sql, params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    cmd.Parameters.AddRange(parameters);
                    return cmd.ExecuteScalar();
                }
            }
        }
        //改进一下上面的,因为返回的是一张表
        public static DataTable ExecuteDataTable(string sql,params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    cmd.Parameters.AddRange(parameters);
                    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                    DataSet dataset = new DataSet();
                    adapter.Fill(dataset);
                    return dataset.Tables[0];
                }
            }

}

//我们就可以这样调用了

private void button3_Click(object sender, RoutedEventArgs e)
        {
          // 没有使用params ...SqlHelper.ExecuteNonQuery("insert into admin(name,password,rank) values('kkeek','123456',1)",new  SqlParameter[0]);

SqlHelper.ExecuteNonQuery("insert into admin(name,password,rank) values('kkeek','123456',1)");
        }

private void button4_Click(object sender, RoutedEventArgs e)
        {
            DataTable ds = SqlHelper.ExecuteDataTable("select * from admin where  rank=@rank", new SqlParameter[] { new SqlParameter("@rank", 2)});
           foreach (DataRow row in ds.Rows) 
           {
               string name = (string)row["name"];
               MessageBox.Show(name);
           }
        }

最新文章

  1. SPSS数据分析—对数线性模型
  2. python--爬虫入门(七)urllib库初体验以及中文编码问题的探讨
  3. 获取在线APP的素材图片
  4. 给Asp.Net MVC及WebApi添加路由优先级
  5. eclipse如何导入java项目文件
  6. [SDN] mininet walkthrough
  7. study
  8. Linux下用C读取配置文件。类似ini这样。
  9. hive 显示表分区真实对应数据路径
  10. 从C++到Qt(命令行编译,讲解原理)
  11. sql function递归
  12. js关于setTimeout传参
  13. MySQL: Integer & String types
  14. UWP:记录一下这几天踩到的坑
  15. csharp: LocalDataCache.sync
  16. jQuery之标签操作和返回顶部、登录验证、全选反选、克隆示例
  17. 配置Linux客户端使用socks5代理上网
  18. main函数如何调用文件外的函数
  19. NodeJS:(一)特性&环境&测试
  20. c#md5加密的简单用法

热门文章

  1. Tomcat查看用户名密码
  2. exe可执行程序及堆栈分配(转载)
  3. poj 3579 Median (二分搜索之查找第k大的值)
  4. UITableView使用总结和性能优化
  5. python学习之路-2 初识python数据类型
  6. [转]Laravel 4之路由
  7. simplify the life ECMAScript 5(ES5)中bind方法简介
  8. JS软键盘代码
  9. jquery.validate的使用
  10. T-SQL 函数概述