您的位置:首页 > 产品设计 > UI/UE

ADO.Net基础/连接SQLServer/ExecuteNoQuery()/ExecuteScalar

2012-10-18 18:34 381 查看
ADO.Net基础

程序要和数据交互要通过ADO.Net进行,通过ADO.Net就能在程序中执行

SQL了。 ADO.Net中提供了对各种不同数据的统一操作接口。

直接在项目中内嵌mdf文件的方式使用SQLServer数据库(基于服务的数据

库)。 mdf文件随着项目走,用起来方便,和在数据库服务上创建数据库

没什么区别,运行的时候会自动附加(Attach)。

双击mdf文件会在“服务器资源管理器”中打开,管理方式和在

Management Studio没有什么本质不同。要拷贝mdf文件需要关闭所有指向

mdf文件的连接。

正式生产运行的时候到附加SQLServer上、修改连接字符串即可,除此之

外没有任何的区别,在“数据库”节点上点右键“附加”;在数据库节点

上任务分离就可以得到可以拷来拷去mdf文件。

用的时候要在控制台、WinForm项目中在Main函数最开始的位置加入备注

中的代码。ASP.Net项目中不需要。

连接SQLServer

连接字符串:程序通过连接字符串指定要连哪台服务器上的、哪个实例的

哪个数据库、用什么用户名密码等。

项目内嵌mdf文件形式的连接字符串“Data Source=.

\SQLEXPRESS;AttachDBFilename=|DataDirectory|

\Database1.mdf;Integrated Security=True;User Instance=True”。

“.\SQLEXPRESS”表示“本机上的SQLEXPRESS实例”,如果数据库

实例名不是SQLEXPRESS,则需要修改。” Database1.md“f为mdf的文件

名。

ADO.Net中通过SqlConnection类创建到SQLServer的连接,

SqlConnection代表一个数据库连接, ADO.Net中的连接等资源都实现了

IDisposable接口,可以使用using进行资源管理,执行备注中的代码如果

成功了就 ok。

可能遇到的错误

1、由于 启动用户实例的进程时出错,导致无法生成SQLServe的用户实例



http://wenwen.soso.com/z/q15616823.htm

2、版本太低,只支持2005及以下数据库。解决:安装VisualStudio 2008

SP1.

3、启动超时。多试几次

执行简单的Insert语句

SqlCommand表示向服务器 提交的命令(SQL语句等)CommandText属性为

要执行的SQL语句,Execute NonQuery方法执行一个非查询语句(Update

、Insert、Delete等)

Using(SqlCommand cmd=conn.CreateCommand())

{

cmd.CommandText=“Insert into T_Users(UserName.Password)

values (’admin’,’888888’)”;

cmd ExecuteNonQuery();

}

ExecuteNonquery返回值是执行的影响行数

常犯错:

string username=‘test’;

…….

cmd.CommandText=“Insert into T_Users(UserName.Password) values

(’username’,’888888’)”;

ExecuteNoQuery()

SqlCommand表示向服务器 提交的命令(SQL语句等)CommandText属性为

要执行的SQL语句,Execute NonQuery方法执行一个非查询语句(Update

、Insert、Delete等)

Using(SqlCommand cmd=conn.CreateCommand())

{

cmd.CommandText=“Insert into T_Users(UserName.Password)

values (’admin’,’888888’)”;

cmd ExecuteNonQuery();

}

ExecuteNonquery返回值是执行的影响行数

常犯错:

string username=‘test’;

…….

cmd.CommandText=“Insert into T_Users(UserName.Password) values

(’username’,’888888’)”;

ExecuteScalar

SqlCommand 的一个方法,用于执行查询,返回查询中返回的结果 集中的

第一行 第一列 。

1)

Output inserted.id

执行有多行结果集的用ExecuteReader();

SqlDataReader

Cmd.executeNoQuery()

Cmd.executeReader()

SqlDataReader reader=cmd.ExecuteReader();

While(reader.Read())

{

Console.writeline(reader.GetString(1));

}

Reader 有方法 GetString,GetInt32等方法,他的参数都是整数,序号

。GetOrdinal方法,根据列名动态得到序号。

执行有多行结果集的用ExecuteReader();

Reader 有方法 GetString,GetInt32等方法,他的参数都是整数,序号

。GetOrdinal方法,根据列名动态得到序号。

string source = @"Data Source=.\SQLEXPRESS;AttachDBFilename=|

DataDirectory|\Database1.mdf;Integrated Security=True;User

Instance=True";

using(SqlConnection conn=new SqlConnection(source) )

{

conn.Open();

using (SqlCommand com = conn.CreateCommand())

{

/* com.CommandText = "Insert into T_User

(name,age,nikaname)values('YOYO',20,'PPP')";

com.ExecuteNonQuery();

Console.WriteLine("插入成功!");

*/

com.CommandText = "select * from T_user";

SqlDataReader reader = com.ExecuteReader();

while (reader.Read())

{

string username = reader.GetString

(reader.GetOrdinal("name"));

int age = reader.GetInt32

(reader.GetOrdinal("age"));

Console.WriteLine("Uname={0},Uage=

{1}",username,age);

}

}

}

Console.WriteLine("打开了!");

Console.ReadKey();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: