黑马程序员——ADO.net基础知识

来源:互联网 发布:美化你的声音 知乎 编辑:程序博客网 时间:2024/05/24 03:52

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

ADO.net中项目或是网站链接数据库


如果是控制台、WinForm项目中,要在Main函数最开始的位置加入下面的代码。ASP.Net网站项目中不需要。
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);
}


连接SQLServer:


1.连接字符串:程序通过连接字符串指定要连接哪台服务器上的、哪个实例的哪个数据库、用什么用户名密码等。
2.项目内嵌mdf文件形式的连接字符串:
"Data Source = .\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database1.mdf;IntegratedSecurity=True;User Instance=True"。".\SQLEXPRESS;"表示“本机上的SQLEXPRESS实例”,如果数据库实例名不是SQLEXPRESS,则需要修改。"另外,也可以用(local)\实例名表示,Database1.mdf"为mdf的文件名。


3.ADO.Net中通过SqlConnection类创建到SQLServer的连接,SqlConnection代表一个数据库连接,ADO.Net中的连接等资源都实现了IDisposable接口,可以使用using进行资源管理,这样比较方便。执行下面的代码如果成功了就可以了。
using(SqlConnection conn = newSqlConnection(@"Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\myDatebase.mdf;IntegratedSecurity=True;User Instance=True"))
{
conn.Open();
Console.WriteLine("连接数据库成功!");
}




如果出现“启动用户实例的进程时出错,导致无法生成 SQL Server 的用户实例。”这种错误,可以删除C:\Documents and Settings\[USERNAME]\Local Settings\Application Data\Microsoft\Microsoft SQL Server Data\SQLEXPRESS目录即可,[USERNAME]是Windows用户名,比如说Administrator


SqlCommand 表示要对 SQL Server 数据库执行的一个 SQL 语句或存储过程。
CommandText属性为要执行的SQL语句为sql命令的命令文本,ExecuteNonQuery方法执行一个非查询语句(Update改、Insert增、Delete删等)


using(SqlCommand cmd =conn.CreateCommand())
{
    cmd.CommandText = "Insert into T_Users(UserName.Password) values(‘admin’,’888888’
)";
    cmd.ExecuteNonQuery();
}
ExecuteNonQuery返回操作所影响的记录条数。


ExecuteScalar():执行命令对象的SQL语句,如果SQL语句是SELECT查询,则仅仅返回查询结果集中的第1行第1列,而忽略其他的行和列。该方法所返回的结果为object类型,在使用之前必须强制转换为所需的类型。如果SQL语句不是SELECT查询,则返回结果没有任何作用。

ExecuteReader

如果我们在进行数据操作时,如果没有数据可操作,那么我们只能使用ExecuteReader()这个cmd,而executeNoeQuery()与Executescalar()如果在没有数据的时候使用时,就会出错“对像没有实例化”的错误。所以我们在判断是否有数据时,只可以用ExecuteReader()。
用法:执行有多行结果集的用ExecuteReader
SqlDataReader reader = cmd.ExecuteReader();

while(reader.Read())
{
  Console.WriteLine(reader.GetString(1));
}
2.reader的GetString、GetInt32等方法只接受整数参数,也就是序号,用GetOrdinal方法根据列名动态得到序号。

DataTable的使用

Using(SqlCommand cmd= conn.CreateCommand())
{
Cmd.CommandText=“sql”;

SqlDataAdapter sda=new SqlDataAdapter(cmd);
Sda.Fill(ds);
DataTable dt=ds.Tables[0];
For(int i=0;i<dt.Rows.Count;i++)
{
DataRow row=dt.Rows[i];
String name=Convert.ToString(row[“Name”]);
}

SqlCommandBuilder builder=new SqlCommandBuilder(sda);

sda.Update(ds);


App.config配置文件

连接字符串如果写在代码中,每次新建一个代码,都要写字符串,比较麻烦,而App.config配置文件可以解决这一问题添加App.config文件(文件名不能改):添加→新建项→常规→应用程序配置文件。App.config是.Net的通用配置文件,在ASP.Net中也能同样使用。
在App.config中添加connectionStrings段,添加一个add项,用name属性起一个名字(比如MyStr),connectionString属性指定连接字符串。
在“引用”节点上点右键“添加引用”,找到System.configuration。不是所有.Net中的类都能直接调用,类所在的Assembly要被添加到项目的引用中才可以。
ConfigurationManager.ConnectionStrings["MyStr"].ConnectionString得到连接字符串。


这样非常方便,而且不用每次都重复这一代码。


   ---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------详细请查看:http://net.itheima.com/

原创粉丝点击