黑马笔记-ADO.NET基础学习(二)
2011-11-24 21:19
513 查看
---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流!
----------------------
今天不仅要继续学习ADO.NET还得要整理前几天的学习笔记了……..连接字符串
连接字符串:程序通过接字符串指定要连哪台服务器上的哪个实例的哪个数据库,用什么用户名和密码等。(1)本地连接
stringsource = @" server = .kingsql;database = Mydb; integrated security=SSPI"; stringsource = @" server = .kingsql;database = Mydb; uid = sa; pwd = sa ";(2)远程连接
首先要保证客户端与SQL服务器连接。
(3)项目内嵌MDF文件形式的连接字符串
DataSource=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Mydb.mdf;IntegratedSecurity=True;User Instance=True" SqlConnectionconn = newSqlConnection("Server=.;DataBase=Northwind;Uid=sa;pwd=123;");
DataSourceServer=.;目标服务器IP本地用.(Local);
DataBase 数据库名称;
Uid ,UserID , 连接数据库的用户名;
pwdPassword 是连接数据库的密码;
ADO.NET中通过SqlConnection类创建到SQLSERVER的连接,sqlconnection代表一个数据库连接,ADO.NET中的连接,ADO.NET中的连接等资源实现了IDisposble接口,可以使用Using进行资源管理。
IDisposble:(见什么学什么,好好利用这次学习时间。)
C#中资源的释放是通过手工调用IDisposable.Dispose方法来进行的,更有using语句可以帮助用户及时调用Dispose方法,这在存在异常抛出的情况下非常有用。MSDN对IDisposable接口的解释为:定义一种释放分配的资源的方法。
1) 此接口的主要用途是释放非托管资源。
2) 当不再使用托管对象时,垃圾回收器会自动释放分配给该对象的内存。
3) 但无法预测进行垃圾回收的时间。
4) 另外,垃圾回收器对窗口句柄或打开的文件和流等非托管资源一无所知。将此接口的 Dispose 方法与垃圾回收器一起使用来显式释放非托管资源。
5) 当不再需要对象时,对象的使用者可以调用此方法。
using语句
using语句允许程序员指定使用资源的对象应当何时释放资源。using 语句中使用的对象必须实现IDisposable 接口。此接口提供了 Dispose 方法,该方法将释放此对象的资源。(1)可以在using 语句之前声明对象。
Fontfont2 = new Font("Arial", 10.0f); using (font2) { // use font2 }
(2)可以在using 语句之中声明对象。
using(Font font2 = new Font("Arial", 10.0f)) { // use font2 }
using关键字有什么用?什么是IDisposable?
using 可以声明namespace 的引入,还可以实现非托管资源的释放,实现了IDisposiable 的类在using 中创建,
using 结束后会自动调用该对象的Dispose 方法,释放资源。加分的补充回答:using 其实等价于try……finally,
用起来更方便。
(3)可以有多个对象与 using 语句一起使用,但是必须在 using 语句内部声明这些对象。
using(Font font3=new Font("Arial",10.0f), font4=newFont("Arial",10.0f)) { // Use font3 and font4. }
可能遇到的错误:
1) 由于启动用户案例的进程时出错,导致无法生成SQLSERVER的用户实例。http://wenwen.soso.com/z/q15616823.htm2) 版本太低,只支持2005及以下数据库解决安装VS2008SP1
3) 启动超时,多试几次。
如果SQl语句所查询的表是关键字 怎么解决
加上[ ]例如select *from [user],另外如果字段是关键字,也可以这么写
T_USER
Sqlcommand
表示要对 SQLServer 数据库执行的一个 Transact-SQL 语句或存储过程。无法继承此类。(1)SqlCommand类的属性
1.CommandText获取或设置要对数据源执行的Transact—SQL语句或存储过程。
2. CommandType
获取或设置一个值,该值指示如何解释CommandText属性。
3.Connection
获取或设置SqlCommand的实例使用的SqlConnection。
4.CommandTimeOut
获取或设置在终止执行命令的尝试并生成错误之前的等待时间。
(2)SqlCommand类的方法
1.ExecuteNonQuery();它的返回值类型为int型。多用于执行增加,删除,修改数据。返回受影响的行数。
2.ExecuteReader();
它的返回类型为SqlDataReader。此方法用于用户进行的查询操作。使用SqlDataReader对象的Read();方法进行逐行读取。
例如:
SqlCommand comm =new SqlCommand("select * from CGSZ wherecid="+id,conn); SqlDataReader reder=comm.ExecuteReader(); while(reder.Read()) { //读出内容列 stringstr=reder["cname"].ToString(); //读取分类列 stringstr1=reder["ckind"].ToString(); //分别为文本框加载数据 this.txtContent.Text = str; this.txtClass.Text = str1; }
其中的读取数据列的时候。除了使用reder["列名"].ToString();还可以使用reder[索引].ToSting();
注意:这里的索引指的是数据库中列的索引。从0开始。
3.ExecuteScaler();
它的返回值类型多位int类型。它返回的多为执行select查询。得到的返回结果为一个值的情况,比如使用count函数求表中记录个数或者使用sum函数求和等。
Sqlcommand的ExecuteScaler()方法用于执行查询,并返回查询所返回的结果集中第一行的第一列,因为不能确定返回值的类型,所以返回值是Object。
Output insertedid
insert into T_Person (id,name) OUTPUT inserted.id VALUES(21,'qiaoke')
Conn.open(),conn.close(),conn.dispose()
Close:关闭还可以能打开。Dispose:直接销毁,不能再次使用。
Using 在作用域以后调用Dispose.
SqlConnection,FileStream等的Dispose内部都会做这样的判断,判断有没有CLOSE;如果没有close就先CLOSE,在DISPOSE
注入漏洞与参数化查询。
Console.WriteLine("请输入用户名:"); string username = Console.ReadLine(); Console.WriteLine("请输入密码:"); //密码 string password = Console.ReadLine(); using (//SQL连接 SqlConnection conn = new SqlConnection(@"Data Source=.\sqlexpress;AttachDBFilename=E:\学习\C#练习\for\ConsoleApplication2\ConsoleApplication2\Database1.mdf;integrated security=True;user instance=true") ) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand())//实行语句 { cmd.CommandText = "select count(*) from T_Users where username='" + username + "'"; int i = Convert.ToInt32(cmd.ExecuteScalar()); if (i > 0) { cmd.CommandText = "select count(*) from T_Users where password='" + password + "'"; int j = Convert.ToInt32(cmd.ExecuteScalar()); if (j > 0) { Console.WriteLine("登录成功!"); } else { Console.WriteLine("密码错误!"); } } else { Console.WriteLine("没有该用户!"); } } } Console.ReadKey();
解决方法:
cmd.CommandText = "select * from T_Users where UserName=@dbUserName"; cmd.Parameters.Add(newSqlParameter("dbUserName",txtBxUserName.Text))
---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流!
----------------------
详细请查看:http://net.itheima.com/
相关文章推荐
- 黑马笔记-ADO.NET基础学习(一)
- 黑马程序员之ADO.NET基础学习笔记(一)
- 黑马程序员--学习笔记之ADO.Net基础知识
- 黑马程序员之 ASP.NET学习笔记:ADO.NET基础知识总结
- 李浩学习计算机系列笔记——ADO.NET基础入门
- 黑马程序员-- ADO.NET基础学习笔记
- ADO.Net基础-学习笔记
- ASP.Net MVC开发基础学习笔记(10):分部视图PartialView
- ASP.Net MVC开发基础学习笔记(1):走向MVC模式
- ASP.Net MVC开发基础学习笔记:一、走向MVC模式
- ADO.NET基础笔记(1)
- ADO.NET基础学习-----四种模型,防止SQL注入
- ASP.Net MVC开发基础学习笔记(5):区域、模板页与WebAPI初步
- ADO.NET学习笔记(六)
- CUBRID学习笔记 37 ADO.NET Schema Provider
- ADO.NET学习笔记-非链接类
- 2010.03.29ADO.NET对象模型的学习笔记
- ADO_Net学习笔记---总结
- Asp.net控件开发学习笔记(二)-控件开发基础
- Asp.net控件开发学习笔记(三)-控件开发基础