连接字符串
连接字符串是什么?
字符串,一组被格式化的键值对,数据源在哪里,数据库名,提供什么样访问信任级别,其他相关信息。
格式:一组元素组成,一个元素———键值对,各个元素之间 ; 隔开。
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 ;
}