C#连接SQL Server数据库

通过C#f访问和操作数据库中的数据,必须通过以下步骤:
1. 创建Connection对象
2. Open打开数据库连接
3. 创建并通过Command对象操作数据库中的数据
4. 数据处理完毕后,通过Close关闭数据库连接

创建连接:对于创建连接,也即创建Connection对象,关键的一点就是:根据实际需要正确设定连接字符串。 
(a) 设定连接字符串
连接字符串:是在连接数据库时必须提供的信息,其中包括连接的数据库服务器名称、数据库名称、登录数据库的用户名、登录数据库的密码等。一般来说,一个连接字符串所包含的信息如下表所示:

参  

说  

DataSource

指明所需连接的数据库服务器名称

Initial Catalog

指明所需访问的数据库名称

User ID (UID)

指明登录数据库所需的用户名

Password (Pwd)

指明登录数据库所需的密码

Connection Timeout

指定数据库连接超时延迟时间,以秒计算,如果在指定时间内仍连接不上,则返回失败信息。

 

默认值为15秒。

Integrated Security

集成安全性,可设置为TrueFalse

 

如果设置为True,则表示登录数据库时,使用Windows身份验证,此时不需要提供用户名和密码即可登录。

 

如果设置为False,则表示登录数据库时,使用SQL Server身份验证,此时必须提供用户名和密码。

 

默认值为False

示例:连接本地数据库的连接字符串,如下所示:

//使用SQL Server身份验证

private static string connString "Data Source=PC-200904091107;Initial Catalog=QQ;User ID=sa;Pwd=123456;Connection Timeout=30";

 

//使用Windows身份验证

private static string connString "Data Source=PC-200904091107;Initial Catalog=QQ;Integrated Security=true;Connection Timeout=30";


常见问题1如何连接远程数据库服务器?

远程数据库服务器:是指位于互联网 (Internet) 上的数据库服务器。 

连接远程数据库服务器,最关键的一点是获取远程数据库服务器的IP地址,然后在DataSource参数中如下设置:

DataSoure=IP地址,1433

其中:IP地址是指远程数据库服务器的IP地址,1433是指数据库使用的端口号。

连接远程数据库服务器的连接字符串,如下所示:

//使用SQL Server身份验证

private static string connString "Data Source=123.68.179.226,1433; Initial Catalog=QQ; User ID=sa;Pwd=123456;Connection Timeout=30";

 

//使用Windows身份验证

private static string connString "Data Source=123.68.179.226,1433; Initial Catalog=QQ; Integrated Security=true;Connection Timeout=30";


常见问题2如何合理设置Connection Timeout

当你连接数据库服务器时,可能会由于网速比较慢,应用程序执行效率比较低,或者有很多用户都在请求连接同一个数据库服务器,这会导致你不能立即建立数据库连接。

ADO.net中,设置了一个连接超时延迟时间,默认为15秒,也即如果你等待15秒之后,仍连接不上,则连接失败。

为了设置合理的连接超时延迟时间Connection Timeout,你应该综合考虑网速的影响、应用程序的执行效率以及要连接数据库的用户数量。

 

常见问题3登录数据库时是使用SQL Server身份验证还是Windows身份验证?

在真实的开发中,开发人员到底应该选用哪种身份验证方式,要根据具体情况来决定。但一般情况下,应该选择使用SQL Server身份验证方式,因为它更加安全与灵活。


(b) 创建Connection对象

当正确设定连接字符串后,便可以根据连接字符串来创建Connection对象。

创建Connection对象,有两种方式。

方式一:

//数据库连接字符串       

private string connString "Data Source=PC-200904091107;Initial Catalog=QQ;User ID=sa;Pwd=123456";

 

//数据库连接对象

public SqlConnection connection new SqlConnection(connString);


方式二:

public UserInfo()

{

     InitializeComponent();

            

     //数据库连接字符串

     string connString "Data Source=PC-200904091107;Initial Catalog=QQ;User ID=sa;Pwd=123456";

 

     //数据库连接对象

     SqlConnection connection new SqlConnection();

     connection.ConnectionString connString;

}


管理连接:是指建立数据库连接之后,根据需要打开数据库连接和关闭数据库连接。主要用到连接类的两个方法:Open )方法和Close )方法。

(1) 打开数据库连接:Open )

打开数据库连接:是指打开已建立好的Connection对象,以便为后面的数据操作做准备。

注意:所有的操作都是在连接打开以后再进行的,也即打开连接是进行数据操作的必要前提。

 

(2) 关闭数据库连接:Close )

关闭数据库连接:是指关闭一个已经打开的Connection对象,释放连接所占用的系统资源。

 

注意:每打开一个数据库连接就会占用一些系统资源,所以每次处理完成数据操作后,一定要及时关闭数据库连接,释放连接所占用的系统资源。

 

示例:在服务器名为“PC-200904091107”的“QQ”数据库中,删除用户表中的信息,主要代码,如下所示:

//删除用户信息

private void btnDel_Click(object sender, EventArgs e)

{

try

{

      //数据库连接字符串

      string connString "Data Source=PC-200904091107;Initial Catalog=QQ;User ID=sa;Pwd=123456";


//数据库连接对象

SqlConnection connection new SqlConnection(connString);


//打开数据库连接

connection.Open();


//删除记录用的sql语句

string sql String.Format("delete from Users where Id {0}",this.txtLoginId.Text);

 

//创建Command对象

SqlCommand command new SqlCommand(sql, connection);

 

//执行更新数据库的命令,返回一个整型的数值

  int result command.ExecuteNonQuery();

 

//如果返回值为1,则说明修改成功

if (result == 1)

{

MessageBox.Show("删除成功!");

}

else

{

MessageBox.Show("删除失败!");

}

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

finally

{

      //关闭数据库连接

      connection.Close();

}

}

处理异常

(1) 为什么要处理异常 

使用ADO.net访问和操作数据库时,可能会产生各种异常。例如:当打开数据库连接时,如果指定的数据库服务器不存在,或者指定的数据库不存在,或者指定的登录用户名不对,或者指定的登录密码不对,都会导致产生异常。

为了保证基于ADO.net的数据库应用程序,能够健壮地良好地运行,很有必要引入异常处理机制。

 

(2) 如何处理异常 

ADO.net中,除了可以使用异常类 Exception 之外,它还为SQL Server提供了专用的异常类 SqlException

可在try  catch  finally语句块中进行异常处理,遵循先处理特殊异常 SqlException,再处理一般异常 Exception的原则。

示例:打开数据库连接的异常处理代码,如下所示:

private void btnOpenConnection_Click(object sender, EventArgs e)

{

//数据库连接字符串

        string connString "Data Source=PC-200904091107;Initial Catalog=QQ;User ID=sa;Pwd=123456";

 

        //数据库连接对象

        SqlConnection connection new SqlConnection(connString);

            

        try

        {

            //打开数据库连接

            connection.Open();

        }

        catch (SqlException sqlEx)

        {

            MessageBox.Show(sqlEx.Message);

        }

        catch (Exception ex)

        {

            MessageBox.Show(ex.Message);

        }

        finally

        {

            //关闭数据库连接

            connection.Close();

        }

}

在以上代码中,捕获了connection.Open )语句可能产生的异常,并设立了两级异常处理机制。第一级收集的数据库可能产生的异常,第二级收集的是一般性异常。

注意:无论是否产生异常,都需要关闭数据库连接,以便释放连接所占用的系统资源。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值