C#学习笔记20240730

连接字符串

连接字符串是什么?

字符串,一组被格式化的键值对,数据源在哪里,数据库名,提供什么样访问信任级别,其他相关信息。
格式:一组元素组成,一个元素———键值对,各个元素之间 ; 隔开。

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 ;
   }
  • 21
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值