加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 01:20:03 所属栏目:百科 来源:网络整理
导读:(1)拼接产生SQL语句: ???????string sql = "insert into czyb(yhm,mm,qx) values(‘" + txtName.Text + "‘,‘" + txtPassword.Text + "‘,‘" + cmbPriority.Text + "‘)"; ???????OleDbCommand cmd = new OleDbCommand(sql,conn); ?????? 这种方法写法

(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,qx) values(‘{0}‘,‘{1}‘,‘{2}‘)",txtName.Text,txtPassword.Text,cmbPriority.Text);

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

(3)用参数化SQL语句:

??????string sql="insert into czyb(yhm,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();

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

时间:2019-10-11 12:01:35 阅读(2)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读