.NET连接数据库以及基本的增删改查操作教程
一、前言
因为这学期选修的.net课程就要上机考试了,所以总结下.net操作SqlServer数据的方法。(因为本人方向是Java,所以对.net的了解不多,但以下所写代码均是经过测试成功的),下面话不多说了,来一起看看详细的介绍吧。
二、.net连接数据库
在web.config文件中配置数据库连接,代码写在
其中sa 为SqlServer数据库账号,sa123456为数据库账号密码,dataset位数据库名。
通过上面的代码大家不难看出这是通过SqlServer数据库的账号连接的。那么如果需要通过Windows身份认证连接呢?
其中,dataset为数据库名。
配置好了之后,再在cs后台文件中使用Connection对象连接
Stringconstr=ConfigurationManager.AppSettings["connstring"].ToString(); SqlConnectionmyconn=newSqlConnection(constr);
很明显,第一个句获取我们在web.config中配置的数据库的信息的字符串,然后new一个SqlConnection对象。
这个时候也许你会想,既然是获取配置文件中的字符串,那么可不可以直接在cs后台文件中写而不需要再配置文件中配置后再获取呢?答案是肯定的。
Stringconstr="DataSource=.;InitialCatalog=dataset;IntegratedSecurity=True"; SqlConnectionmyconn=newSqlConnection(constr);
仔细对比下先前写的配置文件,就知道这两种方式的相同点了。
那么现在简单说下Connection对象是个什么。在ADO.NET中Connection对象的主要用途是打开和关闭数据库的连接,通过这个对象,可以对数据库进行访问和操作。
Stringconstr="DataSource=.;InitialCatalog=dataset;IntegratedSecurity=True"; SqlConnectionmyconn=newSqlConnection(constr); myconn.Open(); //相关数据库操作 myconn.Close();
Open就是打开数据库,Close就是关闭数据库。
三、.net操作数据库
那么通过Connection对象打开数据库后怎么对数据库操作呢?在Dao.Net中提供了Command对象,主要就是用来对数据库进行增、删、改、查的操作。
下面我们直接看个查找操作的例子:
Stringconstr="DataSource=.;InitialCatalog=dataset;IntegratedSecurity=True"; SqlConnectionmyconn=newSqlConnection(constr); myconn.Open(); stringsql="select*fromcustom"; SqlCommandcmd=newSqlCommand(sql,sqlConnection); SqlDataReaderdataReader=cmd.ExecuteReader(); Show.Text=""; while(dataReader.Read()) { Show.Text=Show.Text+" 学号 姓名 学院 年龄 昵称 "; } sqlConnection.Close(); "+dataReader[0].ToString() +" "+dataReader[1].ToString() +" "+dataReader[2].ToString() +" "+dataReader[3].ToString() +" "+dataReader[4].ToString()+"
通过上面这段代码,不难发现,在开启Connection对象后,首先我们需要写一段查询的sql语句:
stringsql="select*fromcustom";
然后,new一个SqlCommand对象,参数是sql语句和Connection对象。
SqlCommandcmd=newSqlCommand(sql,sqlConnection);
再然后,我们通过SqlCommand对象的ExecuteReader方法,执行查询语句,并返回一个DataReader对象。
SqlDataReaderdataReader=cmd.ExecuteReader();
再再然后,就是将DataReader对象中的数据(也就是我们查询的数据)读取出来了
while(dataReader.Read()) { Show.Text=Show.Text+""; } "+dataReader[0].ToString() +" "+dataReader[1].ToString() +" "+dataReader[2].ToString() +" "+dataReader[3].ToString() +" "+dataReader[4].ToString()+"
最后,当然是关闭我们的Connection对象了。
sqlConnection.Close();
查询操作是通过Command对象的ExecuteReader方法来操作,那么增删改呢?
增删改的话就得用到Command对象的ExecuteNonQuery方法了。这个方法返回的是受影响的行数,也就是说如果操作失败,返回的是0。
还是看个增加数据的例子吧:
myconn.Open(); Stringsql="insertintocustomvalues('"+uid.Text+"','"+uname.Text+"','"+udepart.Text +"',"+uage.Text+",'"+uename.Text+"','"+upassword.Text+"')"; SqlCommandcmd=newSqlCommand(sql,myconn); if(cmd.ExecuteNonQuery()>0) { this.Response.Write("alert('增加成功!')"); } else { this.Response.Write(" alert('添加失败!')"); } myconn.Close();
通过上面代码,不难发现,其实套路和我们写的查询差不多,就是sql语句不同和调用的Command对象不同而已。
但是,仔细看会发现这段代码是使用了sql语句拼接的。这种方式写起来比较乱(又是双引号又是单引号的),还有可能被sql注入。这个时候就会想,能不能有占位符呢?答案是肯定的。
myconn.Open(); SqlCommandcmd=myconn.CreateCommand(); cmd.CommandText="insertintocustomvalues(@uid,@uname,@udepart,@uage,@uename,@upassword)"; cmd.Parameters.AddWithValue("@uid",uid.Text); cmd.Parameters.AddWithValue("@uname",uname.Text); cmd.Parameters.AddWithValue("@udepart",udepart.Text); cmd.Parameters.AddWithValue("@uage",uage.Text); cmd.Parameters.AddWithValue("@uename",uename.Text); cmd.Parameters.AddWithValue("@upassword",upassword.Text); if(cmd.ExecuteNonQuery()>0) { this.Response.Write("alert('增加成功!')"); } else { this.Response.Write(" alert('添加失败!')"); } myconn.Close(); ShowAll();
这段代码与之前代码的不同之处在于:
1.使用Connection对象的CreateCommand方法创建了一个SqlCommand对象。
SqlCommandcmd=myconn.CreateCommand();
2.使用了Command对象的CommandText属性写sql语句文本,当然也可以是存储过程的名称。
cmd.CommandText="insertintocustomvalues(@uid,@uname,@udepart,@uage,@uename,@upassword)";
3.使用了Command对象的Parameters属性输入参数。
cmd.Parameters.AddWithValue("@uid",uid.Text); cmd.Parameters.AddWithValue("@uname",uname.Text); cmd.Parameters.AddWithValue("@udepart",udepart.Text); cmd.Parameters.AddWithValue("@uage",uage.Text); cmd.Parameters.AddWithValue("@uename",uename.Text); cmd.Parameters.AddWithValue("@upassword",upassword.Text);
嗯这样一改看起来就很舒服了^_^
修改、删除和增加的套路是差不多的。这里就不贴代码了。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。