以下内容给大家c#连接数据库的方法的相关介绍,本文非常具有参考借鉴价值,具体详情如下所示。
ASP.NET连接数据库的技术叫ADO.NET,它是用来向数据库提交sql语句的一堆类。这里连接的是Sql Server 2008数据库,其他数据库用法差不多,就是调用的类名不一样。
首先在Web.config(本地的添加应用程序配置文件App.config,本地还要添加System.Configuration.dll程序集)上配置数据库连接字符串,添加如下节点代码:
<connectionStrings> <add name="connstr" connectionString="Data Source=.;Initial Catalog=Milk ;User Id=sa;Password=521521521;"></add> </connectionStrings>
</div>
name是链接字符串名称,可以随便取。connectionString是链接字符串。Data Source数据库所在服务器IP地址,这里是本地写“.”。 Initial Catalog是数据库名称。User Id是数据库用户,其中sa是最高权限管理员账户,需要谨慎使用,而是针对数据库建立数据库的专用受限账户。Password是密码。
程序使用数据库时,先提取配置文件的连接字符串赋值给一个变量。代码如下:
public static readonly string connstr = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
</div>
ConfigurationManager是静态类,提供对客户端应用程序配置文件的访问。
接着打开数据库连接,使用完毕后用using自动释放连接:
SqlConnection是个密封类,表示 SQL Server 数据库的一个打开的连接。接着是执行SQL语句,先定义向数据库发送指令用到的SqlCommand类,定义之后确定语句执行的连接对象是conn,再确定要执行的SQL语句,用法举例如下:
//SqlConnection为建立和数据库连接的对象 using(SqlConnection conn = new SqlConnection(connstr)) { conn.Open();//打开连接 //通过连接创建一个向数据库发命令(Command)的对象SqlCommand using(SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText =”Insert into T_Student*(Name,Age) values(‘XXX',18)”;// CommandText要执行的SQL语句 cmd.ExecuteNonQuery();//执行 } }</div>
ExecuteNonQuery()一般用来执行Update、Delete、Insert语句
对于一种一行、一列返回值的结果执行用ExecuteScalar(),它返回object类型。举例如下:
using(SqlConnection conn = new SqlConnection(connstr)) { conn.Open();//打开连接 //通过连接创建一个向数据库发命令(Command)的对象SqlCommand using(SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText =”select Name from T_Student where Name=”XXX””;// CommandText要执行的SQL语句 cmd.ExecuteScalar();//执行 } }</div>
返回值有多行结果时要用ExecuteReader(),返回类型SqlDataReader,需要释放,用法举例:
using(SqlConnection conn = new SqlConnection(connstr)) { conn.Open();//打开连接 //通过连接创建一个向数据库发命令(Command)的对象SqlCommand using(SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText =”select * from T_Student where Age<18”; using(SqlDataReader reader=cmd.ExecuteReader() { while(reader.Read()) { string name=reader.GetString(1);//获得第一列列的值 int age=reader.GetIn32(2); //获得第2列列的值 Console.WriteLine(name); Console.WriteLine(age.ToString()); } } } }</div>
其中Read方法返回bool类型,查询结果是放到数据库中,没有放到客户端。初始指针指向第一条数据之前,每调用一次Reader指针下移一条,只要没有移到最后一条之后,就直接返回true。reader的GetString\GetInt32等方法只接受整数参数,也就是序号,用GetOrdinal方法根据列名动态得到序号。
0列 |
第一列 |
第二列 |
第三列 |
Id |
Name |
Age |
Hobby |
1 |
XXX |
您可能想查找下面的文章:文章分类 |