C#项目实例中SQL查询语句使用
以下是学习中小结,若有幸被大侠看到,文章中的错误还望不吝赐教。。。。
C#中使用SQL语句
首先注意两点:
第一、语句的构造是否正确,第二、与程序交互时,使用到的一些变量
1.在sql语句中。如果某个字段的数据类型不为数字形式,那么在sql语句中,如条件判断...都需要用到(两个单引号)将数据括起来;例如:
表[student]id(自动编号)uID(学号)uName(学生姓名)
-->查询(名字是李世民的学生信息):
selectuID,uNameFROMstudentWHEREuName='李世民'
2.在C#中,string类型的变量需要使用(两个双引号)“”括起来
结合以上两点、在c#中拼凑SQL查询语句你就可以这样使用
stringstr_Sql="SELECTuID,uNameFROMstudentWHEREuName='李世民'";
---------------------------------------------------------------------------
1.首先把你的SQL语句构造好。不要先加变量
stringstr_Sql="SELECTuID,uNameFROMstudentWHEREuName='"++"'";
2.在需要使用变量的位置,用(两个双引号)将这句话分开。
现在它只不过是字符串而已;
在这其中,你可以看出来,where后加入的两个双引号,一个是用来结束,与最开头的双引号对应。
---->在c#语句中。使用两个双引号将字符串括起来。注意一定要成对
---->连接两个字符串所有的操作符是+ 号
---------------------------------------------------------
stringstr_Sql="SELECTuID,uNameFROMstudentWHEREuName='"+变量+"'";
总结:双引号"和加号+是C#中的定界符.
两个双引号之中的字符都被程序认定为字符串不参与任何计算或是程序的执行。仅仅是字符串。而加号是连接两个字符串的定界符。
比如stringstr_Print="我是"+"天下第一";
变量str_Print的值为我是天下第一
单引号'是SQL语句中对数据类型为字符类型的字段使用的nvarcharntextnchar。。。
----------------------------------------------------------------------------------------
//some查询语句
stringsql=string.Format("select*fromUserInfowhereUname='{0}'andUPwd='{1}'andUState='{2}'",this.txtName.Text.Trim(),this.txtPwd.Text.Trim(),num);
------------------
//定义sql语句
stringsql="select*fromBookInfowhereBookType='"+booktype+"'"+cbo1+"BookNamelike'%"+bookname+"%'"+cbo2+"BookContentlike'%"+bookcontent+"%'";
---------------------------------
stringsql=string.Format(insertintoBookInfovalues('{0}','{1}','{2}','{3}','{4}','{5}','{6}'",booktype,bookauthor,bookpic,bookprice,bookcontent,bookissue);
-------------------------------------------------------
(1)拼接产生SQL语句:
以下是代码片段:stringsql="insertintoczyb(yhm,mm,qx)values('"+txtName.Text+"','"+txtPassword.Text+"','"+cmbPriority.Text+"')";
OleDbCommandcmd=newOleDbCommand(sql,conn);
这种方法写法比较复杂,且安全性低,容易遭受SQL注入***。
(2)用string.Format方法:
以下是代码片段:stringsql=string.Format("insertintoczyb(yhm,mm,qx)values('{0}','{1}','{2}')",txtName.Text,txtPassword.Text,cmbPriority.Text);
(3)用参数化SQL语句:
以下是代码片段:stringsql="insertintoczyb(yhm,mm,qx)values(@yhm,@mm,@qx)";
OleDbCommandcmd=newOleDbCommand();
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)如果数据库支持存储过程(如SQLServer),可以调用存储过程执行SQL:
以下是代码片段:SqlConnectionconn=newSqlConnection(txtConn);
SqlCommandcmd=newSqlCommand("SearchContact",conn);//存储过程名称为SearchContact
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Add("@name",SqlDbType.VarChar,50);//传入参数
cmd.Parameters["@name"].Value=txtName.Text.Trim();
由于存储过程是数据库预编译的,执行效率高,推荐采用。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。