乐趣区

LINQ学习笔记-数据库的连接信息存哪了呢

当些日子在聊天时,我又抛出了:语言只是工具,重要的是思想。软件的质量控制并不是靠语言,而是靠规范的论调。显然,对方表示质疑。为此,走上了 VB.net 的学习之路。

LINQ

官方如是说:LINQ to SQL 是.NET Framework 版本 3.5,它提供用于管理关系数据作为对象的运行时基础结构的组件。
可见,它是 3.5 开始有的新特性,用来管理关系数据的。

为什么要学习 LINQ 呢?

我们先看下当前项目的示例代码(以登录为例):

 db.connectDB()
        If PasswordTextBox.Text = "" Then
            MsgBox("用户名或密码不能为空!", 48, "提示")
            PasswordTextBox.Focus()
            Exit Sub
        End If

        str = "select f_zuidi,f_renyuan_id,f_jiemian from t_renyuan where f_zuofei=0 and f_xingming='" + CStr(ComboBox2.SelectedValue) + "'and (f_mima='" + PasswordTextBox.Text + "'"+" or  'xxxxx'='"+ PasswordTextBox.Text +"')"

        ds = db.readrecord(str)
        If ds.Tables(0).Rows.Count = 0 Then
            PasswordTextBox.Text = ""MsgBox(" 用户名称或密码错误, 请重新登录!", 48," 警告 ")
            db.closeDB()
            PasswordTextBox.Focus()
            Exit Sub
        Else

过程很简单,先连接数据库,如果密码为空,则提示。否则的话,去进行查库处理。如果没有查看到记录,则报错。否则的话,认为用户登录成功。

但这种代码,我们认为是无法控制其质量的,原因就是过多的出现了字符串(请忽略掉其它问题),试想一下。如果有一天数据表的某个字段名变更了(由 f_zuifi 变更为 zuifi),我们还需要来到这个文件 f_zuifi 这个字符串,来手动的进行变更。而编译器不会给我们任何提示。如果仅仅有 1 个文件还可以,但随着项目的规模的增加,最后数据表字段的变更,就会变得不可控制。

如何使用 LINQ

以前一直对微软有排斥的心理,主要是由于使用上 MAC 以后,感觉 MAC 的稳定性真的是做的太好了。当近距离接触了微软以后,才发现其文档的友好性。比如其官方竟然还有相关的视频教程:https://docs.microsoft.com/zh…。文档的确够多,够完善。推荐文档:https://docs.microsoft.com/zh…

其实官方文档真的说的够完善了,在具体的使用过程中,在执行 项目 -> 添加组件 时,未找到 LINQ to SQL 类 。以时,我们需要来到 工具 -> 获取工具与功能,并选择单个组件中的 LINQ to SQL 工具.

再然后就有了。

数据库信息存哪了呢?

在使用 LINQ 成功的查询后,我开始思索一个问题:当前是开发环境,如果是生产环境的数据库地址、端口、用户名、密码、数据库名称与我配置的不一样,我怎么修改呢?于是,查看数据源的代码:

    Public Sub New()
        MyBase.New(Global.stjl.My.MySettings.Default.testConnectionString, mappingSource)
        OnCreated
    End Sub

发现其使用的是项目的 Settings 中的值。

        Public ReadOnly Property testConnectionString() As String
            Get
                Return CType(Me("testConnectionString"),String)
            End Get
        End Property

获取的是 testConnectionString 这个字符串的配置信息。它竟然在这:

虽然还没有正式的发布过,但相信发布应用后这个值应该很容易修改吧。

结论

这给我了一个新的思路:一些关于项目配置的信息,我是否也应该放到这个文件中并且参考官方的调用方法进行调用呢?

退出移动版