ADO.NET 基础 (SQL Server)

一、Web.config配置

<connectionStrings>
<add name="constr_name" connectionString="server=192.168.1.139;uid=sa;pwd=123456;Trusted_Connection=no;Database=dabasename" providerName="system.data.sqlclient"/>
</connectionStrings>
注:constr_name(自定义名),server(sqlserver服务器地址),uid(登录名),pwd(密码),Trusted_Connection(是否使用windows账户登录),Database(数据库名),providerName(数据库类型,sqlserver的为system.data.sqlclient)-

二、C#程序

  例1、 获取所有用户

//一、连接数据库
string connectionString = ConfigurationManager.ConnectionStrings["constr_name"].ToString();
SqlConnection conn = new SqlConnection(connectionString);
conn.Open(); //二、构建数据库操作类
SqlCommand command = new SqlCommand();
command.CommandText = "SELECT * FROM [User];";
command.Connection = conn; //三、读取数据
SqlDataReader reader = command.ExecuteReader(); //四、将数据写入对象
User user = null;
List<User> list = new List<User>();
while (reader.Read())
{
user = new User();
user.id = (int)reader["id"];
user.name = reader["name"].ToString(); list.Add(user);
} //五、关闭
reader.Close();
conn.Close(); //另外,User实体类
class User
{
public int id { get; set; }
public string name { get; set; }
}

  例2、 使用事务,插入用户数据

int result = ;

//一、连接数据库
string connectionString = ConfigurationManager.ConnectionStrings["constr_name"].ToString();
SqlConnection conn = new SqlConnection(connectionString);
conn.Open(); //--开始事务
SqlTransaction trans = conn.BeginTransaction(); try
{
//二、构建数据库操作类
SqlCommand command = new SqlCommand();
command.CommandText = "INSERT INTO [User] VALUES(1,'name1');";
command.Connection = conn;
command.Transaction = trans;//事务
result += command.ExecuteNonQuery();//插入第一条用户数据并返回影响条数 command.CommandText = "INSERT INTO [User] VALUES(2,'name2');";
result += command.ExecuteNonQuery();//插入第二条用户数据并返回影响条数 if (result == )
{
trans.Commit();//两条数据都插入成功则提交事务
}
else
{
trans.Rollback();//否则回滚事务,取消所有插入的数据
} }
catch (System.Exception ex)
{
trans.Rollback();//出错,回滚事务
}
finally
{
conn.Close();
}

另外:

如果忘记关闭连接对象(使用conn.Close();),将影响性能,所以鼓励使用using,详情见以下连接:

http://blog.csdn.net/u011096141/article/details/24370141

当然,忘记关闭的情况应该是在一些比较复杂项目中才会发生。

上一篇:从PHP Codeigniter中的文件夹中检索图像


下一篇:UNIX网络编程-recv、send、read、write之间的联系与区别