前言:
“Ado.Net”这又是什么技术?其实一点也不复杂,单纯的就是一组在IDE工具(VS)中通过C#编程语言操作数据库的类库,其实也就是一组类库;
一、现在编程中多半都会涉及到数据库的相关知识,所以学会如何在开发工具中熟练的使用数据库也变得尤为重要;那便从最简单的开始,通过连接字符串来实现数据库连接
Windos账户凭据登录 | Data Source=(local)\\SQLEXPRESS;"Database=DataName;trusted_connection=true; |
---|---|
Sa账户凭据登录 | server=.;uid=sa;pwd=123456;Initial catalog=DataName |
注意:数据来源 data source或者server都可以;数据库名称database或者Initial catalog;
sqlconnection connection=new sqlconneciton(connectionstring); ----创建数据库连接实例 |
---|
------------------------------------------------------------------------------------------------------------------
二、当然相对来说这是最简单的连接,但是假如我们编译成程序后,移植到不同电脑相同数据库(MySQL、sqlserver、oracle)但是不同数据库名称(DataName)后,该如何使用,此时难道重新编译生成可执行程序吗?NO!-------这个时候连接字符串配置文件便起了重要的作用。
Console.WriteLine(ConfigurationManager.AppSettings["sqlconn"]); //显示连接数据库字符串 |
---|
Console.WriteLine(ConfigurationManager.ConnectionStrings["sql2"].ConnectionString); //显示连接数据库字符串 |
--------------------------------------------------------------------------------------------------------------
三、不过我还是感觉单纯的依靠字符串连接,太过于简单,一点也不高大上,So?SqlConnectionStringBuilder
//SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();//数据库连接字符串构造器
//builder.DataSource = "DESKTOP-GCS3QKO\\SQLEXPRESS";
//builder.InitialCatalog = "myfirstdb";
//builder.IntegratedSecurity = true;
//SqlConnection connection = new SqlConnection(builder.ConnectionString)
打开连接 | Open() |
---|---|
关闭连接 | Close();关闭后还可以打开 |
管道关闭 | Dispose();一般通过执行sqlcommand指令后需要关闭 |
------《关于数据库执行指令操作》---------------------------------------------------------------------------------
创建数据库查询类实例 | SqlCommand cmd = new SqlCommand(cmdText, connection);参数可以为空 |
---|---|
查询类实例与连接 | sqlcommand.connetion=sqlconnection ; |
查询类实例语句 | sqlcommand.sqlcommandtext=" "; |
查询类执行 | sqlcommand.executenonquery();除了DML中的select语句,都可以使用 |
-------------------------------------------------------------------------------------------------------------------
四、那么此时我们的内容到这里就结束了吗?还没有...;不知道各位是否还记得“SQL注入”,这个黑客都比较喜欢的名词;
登录名=任意语句' or 1=1 -- //我们之前操作的SQL执行命令语句几乎都存在这个问题,此时便跳过SQL数据验证,然后登陆系统,下面语句便可以解决这个问题; |
---|
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "select * from UserInfo where UserName=@UserName and UserPwd=@UserPwd";
cmd.Parameters.Add("@username", txtUserName.txt);//第二个参数为变量名
cmd.Parameters.Add("@UserPwd", txtPwd.txt);//第二个参数为变量名
第二个参数为任意类型(适用于所有变量) | cmd.Parameters.AddWithValue(string parameters, object value); |
---|---|
通过定义变量类型进行赋值 | cmd.Parameters.Add("@id", SqlDbType.Int).Value = 变量名; |