- 连接字符串,常用的两种方式: server=计算机名或ip\实例名;database=数据库名;uid=sa;pwd=密码; server=计算机名或ip\实例名;database=数据库名;integrated security=true; - 常用的类库 sqlconnection 连接数据库用 sqlcommand 执行sql语句 sqldatareade
-> 连接字符串,常用的两种方式:
server=计算机名或ip\实例名;database=数据库名;uid=sa;pwd=密码;
server=计算机名或ip\实例名;database=数据库名;integrated security=true;
-> 常用的类库
sqlconnection 连接数据库用
sqlcommand 执行sql语句
sqldatareader 读取的对象(此种读取数据的方式有点像streamreader)
sqladapter 将数据库中的数据放入dataset
dataset 内存级别的离线数据库(有点像filestream.read)
对比模型
(图片来自网络,若是原文作者看到,请提供链接地址,时间很久远了.......)
-> 连接数据库的步骤
-> 写连接字符串
-> 创建连接对象,使用连接字符串
-> open,打开数据库
-> 关闭释放数据库,可以使用using
2、执行sql语句
-> 使用sqlcommand对象
-> 步骤:
-> 首先创建sql语句字符串(sql)与连接通道sqlconnection(conn)
1 string sql = insert into tbl(id, name) values(1, '123');2 sqlconnection conn = new sqlconnection(@server=计算机名或ip\实例名;database=数据库名;uid=sa;pwd=密码;);
-> 创建sqlcommand对象,将sql与conn交给它(通过构造函数或属性)
sqlcommand cmd = new sqlcommand(sql, conn);
-> 在open的情况下,调用方法(sqlcommand对象的方法)
1 conn.open();2 cmd.方法();
-> 常用的三个方法
1 executenonquery() 专门执行非查询语句(增、删、改等),返回受影响行数2 executescalar() 执行查询,返回的是结果中第一行第一列的数据(object) 3 executereader() 专门执行查询,可以获得多行多列的数据
3、 先创建一个表,插入数据
注意问题
-> sql语句如果在ssms中执行没有问题在ado.net一般不会出现问题
-> 关于主键和自动增长
-> 连接字符串数据库的名字
-> 关于约束
异常处理
1 try 2 { 3 // 可能出现异常的代码 4 } 5 6 catch(exception ex) 7 8 { 9 // 出现异常之后的代码10 }11 12 finally13 {14 // 用来关闭连接15 }
4、 executescalar()
-> 读取数据,获取第一行与第一列
-> 执行中除了sql语句和执行方法不同流程都一样
5、-> 将sql语句中的参数拼接修改一下
-> 凡是要用到参数的地方,都将这个变数,写成一个变量
-> 使用的时候为这个变量赋值即可
-> 实现步骤
-> 写sql语句的时候,用@别名代替挖坑的地方
1 select count(*) from tbllogin where loguid='{0}' and logpwd='{1}';容易sql注入漏洞攻击2 select count(*) from tbllogin where loguid=@loguid and logpwd=@logpwd;
-> 在ado.net中执行sql语句前(cmd.方法()调用前)
-> 创建一个对象,sqlparameter
1 sqlparameter p = new sqlparameter(参数的别名, 参数的值);2 sqlparameter p1 = new sqlparameter(@loguid, txtuid.text.trim());3 sqlparameter p2 = new sqlparameter(@logpwd, txtpwd.text);
-> 将参数加到cmd对象中
cmd.parameters.add(参数对象);cmd.parameters.add(p1);