欣晨的第一次学习笔记--ado.net,sqlconnection,sqlcommand

一、知识描述点

ADO.NET 
组成数据提供程序的类: 
Connection是用来来建立和数据库的连接。 
Command是用来执行SQL命令和存储过程。 

1、SqlConnection

1)       使用SqlConnection类可以连接到SQL Server数据库。SqlConnection对象的主要属性和方法如下:

属性:ConnectionString(连接字符串)

方法:Open(打开数据库连接)

Close(关闭数据库连接)

2)       连接数据库主要分以下三步:

定义字符串

创建SqlConnection对象,代码如下:

SqlConnection sqlConnection = new SqlConnection();

打开数据库连接,代码如下:

sqlConnection.Open();

a)       使用windows验证

SqlConnection sqlConnection = new SqlConnection();                  //声明并实例化SQL连接;

sqlConnection.ConnectionString = "Server=(Local);Database=EduBaseDemo;Integrated Security=sspi";

//在字符串变量中,描述连接字符串所需的服务器地址、数据库名称、集成安全性

b)      使用sql连接验证

SqlConnection sqlConnection = new SqlConnection();                  //声明并实例化SQL连接;

sqlConnection.ConnectionString = "Server=(Local);Database=EduBaseDemo;Integrated

Security=false;user id=sa;password=sa";

//在字符串变量中,描述连接字符串所需的服务器地址、数据库名称、集成安全性

 

2、SqlCommand

一、SqlCommand对象用于执行具体的SQL语句,如增加、删除、修改、查找。SqlCommand对象的使用步骤如下。

创建SqlConnection对象。

定义SQL语句。

创建SqlCommand对象。

调用SqlCommand对象的某个方法,执行SQL语句。

二、Sqlcommand的应用 
Sqlcommand对象允许您指定在数据库上执行的操作类型。例如,可以在数据库中的行数据上执行SELECT、INSERT、修改和DELETE命令。SqlCommand对象可以用于支持断开连接的数据管理,但我们将只单独使用SqlCommand对象。Sql DataAdapter适配器后面的过程将解释如何使用断开的数据来实现应用程序。 
创建SqlConnection对象的两种形式: 
1、 
SqlConnection connection = new SqlConnection(“data source=.; database=SampleDB; integrated security=SSPI”); 
2、 
SqlConnection connection = new SqlConnection(); 
connection.ConnectionString = “data source=.; database=SampleDB; integrated security=SSPI”;

实例 
using System.Data.SqlClient; 
using System.Data; 
//定义链接 
SqlConnection conn; 
/定义命令 
SqlCommand cmd; 
//定义datareader 
SqlDataReader myreader; 
//定义两个变量用来存储数据库链接字符串和命令字符串 
string connstr, selectcmd; 
connstr = ConfigurationManager.ConnectionStrings[“FANXXConnectionString”].ToString(); 
selectcmd = “SELECT COUNT(*) AS Expr1 FROM TAB1TMP WHERE (COL1 = ‘” + col1 + “’) AND (COL2 = ‘” + col2 + “’)”; 
//实例化链接并打开 
conn = new SqlConnection(connstr); 
conn.Open(); 
//实例化cmd并制定执行语句与执行链接 
cmd = new SqlCommand(selectcmd, conn); 
//执行查询命令并赋给datareader 
//myreader = cmd.ExecuteReader(); 
//或者只是获取一个单值 ,当然还有只执行无效返回的nonquery 
int lv_count = cmd.ExecuteScalar().ToString(); 
if (myreader.Read()) 

myreader.Close(); 
//切记关闭连接,释放资源 
conn.Close();

 

 

二、思维导图

 

 

三、其他补充

1、用户注册代码

 

2、注意问题

这种密码赋值很容易受到注入式攻击

所输入的这些字符改了原代码,我们来分析下为什么

‘ ) or 1=1 ;--可以成功登陆

(1)or前后只要有一方成立则为成立,而1=1是一个恒成立的等式。

(2)--会注释掉后面所输入的任何代码。

为了解决这个问题可以使用如下带参数代码:

sqlCommand.CommandText ="INSERT tb_User (No,Password) VALUES(@No,HASHBYTES ('MD5',@Password));";

sqlCommand.Parameters.AddWithValue("@No",this.txb_UserNo.Text.Trim());

sqlCommand.Parameters.AddWithValue("@Password",this.txb_Password.Text.Trim());

sqlCommand.Parameters["@Password"].SqlDbType=SqlDbType.VarChar;

posted @ 2019-03-09 15:16  一个烤羊腰子  阅读(130)  评论(0编辑  收藏  举报