zoukankan      html  css  js  c++  java
  • C# 数据访问编码需要遵循的几个规范

    一,链接打开之后必须关闭,否则会占用系统空间

    SqlConnection conn=new SqlConnection(CONNECTIONSTRING);

    conn.open();

    conn.close();   //必须成对出现

    二,在创建命令对象commandText查询时尽量不要用join查询,那样会造成数据访问量加大,可编写多个函数查询多次来完成

    三,在运行程序时,为防止编码出错而造成链接关闭不了,要用try--finally把代码包裹起来 ,之后不管try里面的代码出没出错都会执行到finally内的代码

    SqlConnection conn=new SqlConnection(CONNECTIONSTRING);

    try

    {

       conn.open();

    SqlCommand cmd=conn.Createcommand();

    cmd.CommandText="";

    cmd.Executexxxxx();

    }

    finally

    {

       conn.close();

    }

    四,如果要从一个表中查询多条内容,可以编写一个函数返回SqlDataReader来简化代码,但还要保证链接能够关闭

    static SqlDataReader GetKcDataReader(string name)
    {
        SqlConnection conn = new SqlConnection(CONNECTIONSTRING);

        conn.Open();
        SqlCommand cmd = conn.CreateCommand();
        cmd.CommandText = "select * from kc where WzName='" + name + "'";
        SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection); //注意括号内给ExecuteReader添加了一个参数,用来调用的时候关闭链接
        return dr;

    }
    static decimal GetPrice(string name)
    {
    decimal price = 0;
    SqlDataReader dr = GetKcDataReader(name);
    dr.Read();
    price = Convert.ToDecimal(dr["price"]);
    dr.Close();  //用dr来关闭链接
    return price;
    }

    五,为了防止SQL注入式攻击,在C#中编写sql语句时尽量不要用单引号',而用@xx

    SqlConnection conn=new SqlConnection(CONNECTIONSTRING);

    try

    {

       conn.open();

    SqlCommand cmd=conn.Createcommand();

    cmd.CommandText = "delete from work where infocode=@no";
    cmd.Parameters.Clear();  //编码习惯,为了防止@no声明重复,事先清除一下
    cmd.Parameters.AddWithValue("@no", no);
    cmd.ExecuteNonQuery();

    }

    finally

    {

       conn.close();

    }

    六,执行聚合函数查询的时候,用ExecuteScalar()执行SQL语句,返回首行首列中的值。

    cmd.CommandText = "select count(*) from work where infocode=@no";

    cmd.Parameters.Clear();  
    cmd.Parameters.AddWithValue("@no", no);

    int count =(int)cmd.ExecuteScalar();   //ExecuteScalar()返回值为object类型,需强转成int类型

  • 相关阅读:
    H: Dave的组合数组(二分法)
    G: Dave的时空迷阵(next数组)
    计蒜客 X的平方根(二分法)
    最短路径四种方法
    POJ 2001 Shortest Prefixes(字典树活用)
    HDU 1671 Phone List (qsort字符串排序与strncmp的使用 /字典树)
    快速排序原理
    抓捕盗窃犯
    Hash函数
    Monkey King(左偏树 可并堆)
  • 原文地址:https://www.cnblogs.com/William-1234/p/4488147.html
Copyright © 2011-2022 走看看