文章目录
- 连接字符串
- 连接字符串是什么?
- SQLServer连接字符串
- 配置文件中存储
- 异常
- SqlCommand
- SqlCommand介绍
- 重要属性
- 创建
- Command执行方法
- ExecuteNonQuery
连接字符串
连接字符串是什么?
字符串,一组被格式化的键值对,数据源在哪里,数据库名,提供什么样访问信任级别,其他相关信息。
格式:一组元素组成,一个元素———键值对,各个元素之间 ; 隔开。
SQLServer连接字符串
Sql server 身份验证
Data Source 数据与 Initial Catalog 数据库名 User Id 账号 Password密码
windows身份验证
Data Source 数据与 Initial Catalog 数据库名 Integrated Security=True/SSPI
Trusted_Connection=True
配置文件中存储
配置到文件中 写哪个位置?(推荐) connectionStrings节点中 appSettings节点中
string connStr=ConfigurationManager.ConnectionStrings[“connStr”].ConnectionString;‘’ //读取连接
string connStr=ConfigurationManager.AppSetting[“conStr”].ToString();
异常
try{ } catch(){ } finally{ }
using语句块 ----try finally 没有catch,处理异常 —释放对象
using 引用命名空间
using 命别名
SqlCommand
SqlCommand介绍
对SQLServer数据库执行的一个T-SQL语句或存储过程。
SqlCommand对象:Ado.Net中执行数据库命令的对象。
重要属性
- Connection:SqlCommand对象使用的SqlConnection
- CommandText:获取或设置要执行的T-SQL语句或存储过程名
- CommandType:CommandType.Text–执行的是一个Sql语句
CommandType.StoredProcedure–执行的是一个存储过程 - Parameters:SqlCommand对象的命令参数集合 空集合
- Transaction:获取或设置要在其中执行的事务
创建
//1.SqlCommand cmd=new SqlCommand();cmd.Connection=conn;cmd.CommandText=sql;//cmd.CommandType=CommandType.Text;没有必要的//cmd.CommandType=CommandType.StoredProcedure;//如果是存储过程,必须设置//2.SqlCommand cmd1=new SqlCommand(sql);cmd1.Connection=conn;//3. SQL语句 连接对象 推荐的SqlCommand cmd2=new SqlCommand(sql,conn);//4.Connection对象SqlCommand cmd3=conn.CreateCommand();cmd3.CommandText=sql;//5.string delSql="delete from UserInfos where UserId>3";
//SqlCommand cmd4=new SqlCommand(delSql,conn,null);
Command执行方法
- cmd.ExecuteNonQuery();
- cmd.ExecuteScalar();
- cmd.ExecuteReader();
ExecuteNonQuery
- ExecuteNonQuery()方法是SqlCommand类的一个方法
- 主要用来更新数据。通常使用它来执行Update、Insert和Delete语句
- 对于Update、Insert和Delete语句,返回值为该命令所影响的行数
//SQL语句
string updateQuery="Update studentInfo set sName=‘小李‘"+"Where ID=‘200131500145‘";//创建连接对象,建立连接SqlConnection connection=new SqlConnection();connection.Connectionstring=connectionString;//创建命令对象SqlCommand command=new SqlCommand(updateQuery,connection);//打开连接conn.Open();// 调用命令对象的ExecuteNonQuery方法,返回受影响行数int RecordsAffected=command.ExecuteNonQuery();//关闭连接conn.Close();
这个代码的SQL语句中有一个很致命的问题:字符串拼接方式——sName=‘小李‘"+"Where ID=‘200131500145‘。这样非常不安全,要采用参数化方式防止SQL注入问题:
public int checkUser(Users user){string sql = "select COUNT(*) from T_Users where UserName = @UserName and Password = @Password";SqlParameter[] paras ={new SqlParameter ("@UserName",User.username) ,new SqlParameter ("@Password",User.password)};int num = sqlhelper.ExecuteNonQuery(sql, paras);return num ;}