码迷,mamicode.com
首页 > 数据库 > 详细

C#中产生SQL语句的几种方式

时间:2019-10-11 12:19:11      阅读:75      评论:0      收藏:0      [点我收藏+]

标签:参数   编译   varchar   支持   body   入参   txt   过程   class   

(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();

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

C#中产生SQL语句的几种方式

标签:参数   编译   varchar   支持   body   入参   txt   过程   class   

原文地址:https://www.cnblogs.com/wwwbdabc/p/11653130.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!