zoukankan      html  css  js  c++  java
  • C#中产生SQL语句的几种方式

    (1)拼接产生SQL语句:

           string sql = "insert into czyb(yhm,mm,qx) values('" + txtName.Text + "','" + txtPassword.Text + "','" + cmbPriority.Text + "')";
           OleDbCommand cmd = new OleDbCommand(sql, conn);

           这种方法写法比较复杂,且安全性低,容易遭受SQL注入攻击。

    (2)用string.Format方法:

          string sql = string.Format("insert into czyb(yhm,mm,qx) values('{0}','{1}','{2}')", txtName.Text, txtPassword.Text, cmbPriority.Text);

          只是可读性优于第(1)种。

    (3)用参数化SQL语句:

          string sql="insert into czyb(yhm,mm,qx) values (@yhm,@mm,@qx)";
          OleDbCommand cmd = new OleDbCommand();
          cmd.CommandText = sql;
          cmd.Parameters.AddWithValue("@yhm", txtName.Text);
          cmd.Parameters.AddWithValue("@mm", txtPassword.Text);
          cmd.Parameters.AddWithValue("@qx", cmbPriority.Text);
          cmd.Connection = conn;
          conn.Open();
          cmd.ExecuteNonQuery();

         代码结构清楚,对于不支持存储过程的数据库(如Access),推荐采用本方法。

    (4)如果数据库支持存储过程(如SQL Server),可以调用存储过程执行SQL:

            SqlConnection conn = new SqlConnection(txtConn);
            SqlCommand cmd = new SqlCommand("SearchContact", conn);  //存储过程名称为SearchContact
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@name", SqlDbType.VarChar, 50);   //传入参数
            cmd.Parameters["@name"].Value = txtName.Text.Trim();

           由于存储过程是数据库预编译的,执行效率高,推荐采用。

    拣尽寒枝不肯栖,寂寞沙洲。
  • 相关阅读:
    shell 读取文件内容 不以空格换行 再把每行的字符串切分取一部分
    Linux中basename和dirname命令的妙用
    Martiancloud 无注册中心微服务
    spring security自动续签功能
    访问c++类的私有成员
    Ubuntu 安装 docker 及 镜像加速
    谷歌浏览器表单自动填充颜色修改(antd)
    关于复制粘贴失效解决办法
    常见的HTTP状态码(HTTP Status Code)
    Linux 环境安装 MySQL
  • 原文地址:https://www.cnblogs.com/zemax/p/5408648.html
Copyright © 2011-2022 走看看