黑马程序员-ADO.NET入门

                     ----------------------   Windows Phone 7手机开发.Net培训    期待与您交流! ----------------------


1、Ado.net是什么?

通过ado.Net技术,在程序中执行sql数据库的目的

把mdf文件附加到数据库中

不用的时候可以分离

2、神奇代码

加到main方法中

string dataDir =AppDomain.CurrentDomain.BaseDirectory;

      if(dataDir.EndsWith(@"\bin\Debug\") ||dataDir.EndsWith(@"\bin\Release\"))

            {

        dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;

        AppDomain.CurrentDomain.SetData("DataDirectory",dataDir);

            }

3、连接到SQLServer

连接字符串:程序通过连接字符串 指定要连哪台服务器上的、哪个实例的哪个数据库、用什么用户名密码等。

        static void Main(string[] args)

        {

            //每次都复制过来即可(神奇代码)

            string dataDir =AppDomain.CurrentDomain.BaseDirectory;

            if(dataDir.EndsWith(@"\bin\Debug\") ||dataDir.EndsWith(@"\bin\Release\"))

            {

                dataDir =System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;

               AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);

            }

            //项目内嵌mdf文件形式的链接字符串

            using (SqlConnection conn = newSqlConnection(@"Datasource=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database1.mdf;

Integrated Security=True;Userinstance=True")) //连数据库

 

“.\SQLEXPRESS”表示“本机上的SQLEXPRESS实例”,如果数据库实例名不是SQLEXPRESS,则需要修改。“Database1.mdf”为mdf的文件名。

 

AttachDBFilename=|DataDirectory|\Database1.mdf;

表示加入数据库文件,为当前目录下的Database1.mdf文件

如果加入的是其他文件则把文件的目录地址放到这里

 

SqlConnection类不存在,必须using或者ctrl+.(右键)解析

 

//ado.net中通过SqlConnection 类创建到SQLServer的链接,SqlConnection代表一个数据库链接,ado.net中的链接等资源都实现了IDisposable接口

//可以使用using进行资源管理,出了using的{}区域资源链接就释放了,不用try-catch再close和dispose

//后面的command和reader都可以用using进行资源释放

           

 

4、简单的insert语句:

ExecuteNonQuery执行一个非查询语句

{

                conn.Open();

              using (SqlCommand cmd = conn.CreateCommand())

//SqlCommand表示向服务器提交的一个命令(SQL语句等)

                {

           cmd.CommandText = "insert into MyTable1(Name)values('abc')";

         //创建commandText,CommandText属性为要执行的SQL语句

               cmd.ExecuteNonQuery();

// ExecuteNonQuery方法执行一个非查询语句(Update、Insert、Delete等)

ExecuteNonQuery;返回值是执行的影响行数

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

                   Console.WriteLine("打开数据库链接成功");

 

5、  ExecuteScalar:

using(SqlCommand cmd = conn.CreateCommand())

                {

                  //cmd.CommandText = "select count(*)from mytable1";

                    cmd.CommandText ="select count(*) from T_users";

                   Console.WriteLine(cmd.ExecuteScalar());

//返回mytable1中第一行第一列的数据

                    //得到自增字段的值

                    cmd.CommandText ="insert into T_Users (UserName,password) output inserted.idvalues('jiangshan','147258')";

                    int id =Convert.ToInt32(cmd.ExecuteScalar());

                    Console.WriteLine("插入的主键的值:{0}", id);

                }

cmd.CommandText= "select count(*) from T_Users";

inti =Convert.ToInt32(cmd.ExecuteScalar());

ExecuteScalar方法用于执行查询,并返回查询所返回的结果集中第一行的第一列,返回值是object类型。

 

cmd.CommandText= "Insert into T_Users(UserName,Password)

outputinserted.Id values('admin','888888')";

inti = Convert.ToInt32(cmd.ExecuteScalar());

得到自动增长字段的主键值,

在values关键词前加上output inserted.Id,其中Id为主键字段名。

执行结果就是插入的主键值,用ExecuteScalar执行最方便。

向数据库中插入数据时不用插入id是多少,id是自动增长的

 

cmd.CommandText= "select getdate()";

DateTimedt =Convert.ToDateTime(cmd.ExecuteScalar());

 

6、 ExecuteReader

执行查询:返回有多行结果集的用ExecuteReader

SqlDataReaderreader = cmd.ExecuteReader();...

while(reader.Read())数据库的遍历,只能一行一行的读,不能跳

{

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

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值