如何在程序中使用数据库

如何在程序中使用数据库

许多.NET解决方案都是数据库驱动的,因此我们很多人经常想知道如何访问数据库。 为了帮助您理解该问题的答案,我提供了以下示例,作为如何从数据库检索数据的快速示例。

为了使用.NET连接到SQL Server数据库,您需要将System.Data.SqlClient包导入到程序中。

如果您没有连接到SQL Server数据库,请查看InsertAlias的文章,名为

如何在程序第II部分中使用数据库,以获取有关如何连接到其他数据库的信息。 连接字符串

创建数据库后,您需要做的第一件事就是连接到它。 为此,您必须定义一个称为

连接字符串

连接字符串用作查找程序将使用的数据库的方式。 它还包含有关为了访问数据库而使用的身份验证类型的信息。 这意味着连接字符串可能包含用户名和密码。

连接字符串的格式通常如下:

VB代码示例:
Dim connectionString As String ="data source=<nameOfDatabaseServer>;initial catalog=<nameOfDatabase>;user id=<databaseUserId>;password=<passwordForDatabaseUser>" 
C#代码示例:
String connectionString = "data source=<nameOfDatabaseServer>;initial catalog=<nameOfDatabase>;user id=<databaseUserId>;password=<passwordForDatabaseUser>"; 

由于连接字符串包含有关如何访问数据库的非常敏感的信息,因此保护它(通过加密或其他方式)至关重要。 如果要实现Web应用程序,则最好将此信息存储在web.config文件中,以便轻松对其进行保护。

SqlConnection

一旦创建了连接字符串,就必须创建一个SqlConnection对象。 该对象使用连接字符串为您形成与数据库的连接。

VB代码示例:
dim dbCon As SqlConnection
dbCon = New SqlConnection(connectionString) 
C#代码示例:
SqlConnetion dbCon = new SqlConnection(connectionString); 
SqlCommand

创建SqlConnection对象的实例后,需要创建SqlCommand。 该对象用于执行将由数据库执行的sql命令。

VB代码示例:
Dim sqlCom As New SqlCommand 
C#代码示例:
SqlCommand sqlCom = new SqlCommand(); 

一旦有了该对象的实例,就需要设置其某些属性。

首先,您必须指定将要执行的SqlCommand类型。 您可以在此处指定是使用存储过程还是要提供要执行的SQL语句。 在此示例中,我们将介绍如何提供您自己的SQL语句。

您必须将SqlCommand的“ CommandText”属性设置为要由所创建的函数执行的SQL命令。

设置“ CommandText”属性后,必须添加SQL命令语句中使用的所有参数的值。 您可以通过设置SqlCommand的“ Parameters”属性来实现。

您还必须将SqlCommand对象的“ Connection”属性设置为您先前创建的SqlConnection对象,以便连接到数据库。

例如,如果您想在表中插入新的联系人条目,则可以将SqlCommand的“ CommandText”设置为:

VB代码示例:

sqlCom.Connection = dbCon
sqlcom.CommandType = CommandType.Text
sqlCom.CommandText = "INSERT INTO CONTACT(cID, cAddress, cPhoneNumber) " _ +
                     "VALUES(@cID,@cAddress,@cPhoneNumber)"
sqlCom.Parameters.Add("@cID", SqlDbType.Int).Value = 1234567
sqlCom.Parmaeters.Add("@cAddress", SqlDbType.VarChar).Value = "123 Hypoth. Street..."
sqlCom.Parameters.Add("@cPhoneNumber",SqlDbType.VarChar).Value="1-800-999-99999" 
C#代码示例:
sqlCom.Connection = dbCon;
sqlcom.CommandType = CommandType.Text;
sqlCom.CommandText = "INSERT INTO CONTACT(cID, cAddress, cPhoneNumber) " +
                     "VALUES(@cID,@cAddress,@cPhoneNumber)";
sqlCom.Parameters.Add("@cID", SqlDbType.Int).Value = 1234567;
sqlCom.Parmaeters.Add("@cAddress", SqlDbType.VarChar).Value = "123 Hypoth. Street...";
sqlCom.Parameters.Add("@cPhoneNumber",SqlDbType.VarChar).Value="1-800-999-99999"; 
执行您的SQL命令

设置完所有内容后,您可以在数据库上执行SQL命令。

为此,您必须:

  • 首先打开与数据库的连接
  • 然后执行SQL命令
  • 最后关闭连接
VB代码示例:
Try
  dbCon.Open()
  sqlcom.ExecuteNonQuery
  dbCon.Close()
Catch ex As Exception
End Try 
C#代码示例:
try
{
  dbCon.Open();
  sqlcom.ExecuteNonQuery();
  dbCon.Close();
}
catch(Exception ex)
{} 

在上面的代码中,我们使用ExecuteNonQuery方法执行SQL命令,因为更新表的SQL命令不会返回任何结果。 ExecuteNonQuery方法返回已更新的行数。 您可以通过检查sqlcom.ExecuteNonQuery> 0来确定是否更新了任何行。

如果您正在执行返回结果的SQL命令,例如执行SELECT语句,则必须使用其他方法。 SqlCommand的ExecuteReader方法返回一个SqlDataReader对象,该对象包含执行SQL命令后检索到的所有记录。

下面的代码片段向您展示如何将结果存储到SqlDataReader对象中以及如何访问数据。

VB代码示例:
Try
Dim dr As SqlDataReader
dbCon.Open()
dr = sqlcom.ExecuteReader
If dr.HasRows = True Then
  txt_clientID.Text = CType(dr("cID"),Integer).ToString()
  txt_clientAddress.Text = CType( dr("cAddress"),String)
  txt_clientPhoneNumber.Text = CType(dr("cPhoneNumber"),String)
End If
dr.Close()
dbCon.Close()
Catch ex As Exception
End Try 
C#代码示例:
try
{
  SqlDataReader dr;
  dbCon.Open();
  dr = sqlcom.ExecuteReader();
  if(dr.HasRows == True)
  {
    txt_clientID.Text = ((Integer) dr["cID"]).ToString();
    txt_clientAddress.Text = (String) dr["cAddress"];
    txt_clientPhoneNumber.Text = (String) dr["cPhoneNumber"];
  }
  dr.Close();
  dbCon.Close();
}
catch(Exception ex)
{} 
完成SqlDataReader对象后,请确保将其关闭以进行清理。

如果您的Sql命令返回多行,则必须遍历数据读取器以检索所有信息。

例如,下面的代码会将所有“ clientID”添加到TextBox txt_clientID中:

VB代码示例:
While dr.Read
  txt_clientID.Text =  txt_clientID.Text + CType(dr("cID"),Integer).ToString()
End While 
C#代码示例:
while(dr.Read())
{
  txt_clientID.Text =  txt_clientID.Text + ((Integer)dr["cID"]).ToString();
}
其他注意事项

用于连接数据库的对象实现iDisposable接口。 因此,强烈建议定义一个Dispose()方法来正确处理任何连接的处置。 请务必查看如何实施此方法以正确清理内存。 它确实有助于管理您的资源。

希望你觉得这个有用!

-弗林尼

From: https://bytes.com/topic/net/insights/635615-how-use-database-your-program

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值