重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
以下是学习中小结,若有幸被大侠看到,文章中的错误还望不吝赐教。。。。
我们提供的服务有:成都网站设计、成都网站制作、微信公众号开发、网站优化、网站认证、永昌ssl等。为上1000家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的永昌网站制作公司C#中使用 SQL语句
首先注意两点:
第一、语句的构造是否正确, 第二、与程序交互时,使用到的一些变量
1. 在sql语句中。 如果某个字段的数据类型不为数字形式,那么在sql语句中,如条件判断...都需要用到(两个单引号)将数据 括起来; 例如:
表[student] id(自动编号) uID(学号) uName(学生姓名)
-->查询(名字是李世民的学生信息) :
select uID, uName FROM student WHERE uName = '李世民'
2.在C#中,string 类型的变量需要使用(两个双引号) “” 括起来
结合以上两点、在c#中拼凑SQL查询语句你就可以这样使用
string str_Sql = " SELECT uID, uName FROM student WHERE uName ='李世民'";
---------------------------------------------------------------------------
1.首先把你的SQL语句构造好。 不要先加变量
string str_Sql = " SELECT uID, uName FROM student WHERE uName = ' "+ +" ' " ;
2.在需要使用变量的位置,用(两个双引号)将这句话分开。
现在它只不过是字符串而已;
在这其中,你可以看出来,where后加入的两个双引号,一个是用来结束,与最开头的双引号对应。
---->在c#语句中。使用两个双引号 将字符串括起来。注意一定要成对
---->连接两个字符串所有的操作符是 + 号
---------------------------------------------------------
string str_Sql =" SELECT uID, uName FROM student WHERE uName = ' "+变量 +" ' " ;
总结:双引号" 和加号 + 是C#中的定界符.
两个双引号之中的字符都被程序认定为字符串不参与任何计算或是程序的执行。仅仅是字符串。而加号是连接两个字符串的定界符。
比如 string str_Print = "我是" + "天下第一";
变量 str_Print的值为 我是天下第一
单引号'是SQL语句中对数据类型为字符类型的字段使用的nvarchar ntext nchar 。。。
----------------------------------------------------------------------------------------
//some 查询语句
string sql= string.Format("select * from UserInfo where Uname='{0}'and UPwd='{1}'and UState='{2}'", this.txtName.Text.Trim(),this.txtPwd.Text.Trim(),num);
------------------
//定义sql语句
string sql="select * from BookInfo where BookType='"+booktype+"' "+cbo1+" BookName like '%" +bookname+"%' "+cbo2+" BookContent like '%"+bookcontent+"%'";
---------------------------------
string sql=string.Format(insert into BookInfo values('{0}' , '{1}' ,'{2}' ,'{3}' ,'{4}' ,'{5}' ,'{6}' ", booktype,bookauthor,bookpic,bookprice,bookcontent,bookissue );
-------------------------------------------------------
(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); |
(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(); |
由于存储过程是数据库预编译的,执行效率高,推荐采用。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。