深夜,屏幕冷飕飕的。VB窗体设计器里,光标闪得人心烦意乱。鼠标攥得死紧,就盯住那串数据库连接字符串,手心全是汗。李春葆老师的《数据库系统开发教程》正摊在键盘边上,书角卷得跟咸菜干似的。刚拿起来那会儿,我寻思,这不就是本枯燥的说明书嘛?可真跟着书里的步骤,一行行敲建表语句,把窗体控件拖来拽去调位置……那股子较劲的劲儿,嘿,居然上头了。那时候懂什么高深理论?纯靠硬磕。敲错一个分号,能对着屏幕愣上半小时,晚饭?早忘在脑后了。
这书排版,确实不讲究。也不整那些唬人的新词儿。它就像个闷头干活的老工友,把复杂的系统拆成你能上手摸的零件。主键、外键、索引、事务……这些词在书里不是孤立的定义。是跟着具体例题,一点点长出来的。记得讲多表关联那几章,作者没上来就甩一串绕口令似的SQL。先画关系草图。再一步步演示,怎么在查询分析器里把它们串起来。看到这儿,我手都停了。好家伙。那些看着玄乎的数据流转,剥开那层皮,不过是在教人怎么把散落在地上的零件捡起来,按顺序装回去。说实在的,这种“先画后写”的路子,现在不少新教材反倒丢了。一上来就扔代码。初学者根本找不到北。光看报错,就能劝退一半人。
外键这玩意儿,书里讲得挺实在。它卡着两张表的参照完整性,少个环节,系统直接给你甩报错。我合上书琢磨,这跟人与人处的关系,真有点像。咱们总嚷嚷要自由,可长久下来的交情,谁不是带着点“约束”?书里的练习题也不玩虚的,专挑真实开发里会踩的坑:用户输入空值咋整?网络突然抽风怎么回滚?一条条对着屏幕敲代码的时候,我突然明白,写程序说白了就是给不确定性提前打补丁。日子不也这样?谁都想把一切攥在手心,到头来能做的,不过是把那些可能翻车的地方,提前盘算清楚。当然,这话放今天看未必全对。现在好多框架自动兜底了,连回滚都封装好了。但那份“怕出错”的谨慎劲儿,倒是刻在骨子里了。
话说回来,书里有些老派写法,现在瞅着确实有点笨重。VB.NET 2005和SQL Server 2005,版本号摆在那儿,自带一种岁月的颗粒感。有时候我盯着书里的代码截图发呆。现在的框架,早把底层逻辑封装得严严实实。谁还乐意去碰那些原始的ADO.NET连接对象啊?可耐着性子往下翻,我发觉作者真正想塞给我们的,不是某个版本的死语法。是一种“把数据安顿好”的底层逻辑。数据不骗人,就安安静静躺在表格里,等你用对路子去读。这种肯下笨功夫的劲儿,反倒让人踏实。不过话说回来,要是真拿这套代码去接现在的项目,估计连测试都跑不过。但当年能啃下来,确实算是给自己攒了份底气。毕竟底层逻辑这东西,换版本也丢不掉。
啃完最后一章的上机实验,把那个带着登录界面、数据录入模块和简单报表的雏形系统跑通,外头天都亮了。屏幕上的数据终于规规矩矩地跳出来,没报错,也没断连。那会儿的爽感,不像是搞定了什么惊天动地的大工程。倒像是终于把一团乱麻的毛线球,一点点捋顺了。折腾技术到最后,折腾的其实就是个秩序感。信息碎成渣的年代,还能耐着性子建表、设约束、写查询,本身就是在跟自己较劲,守住点条理。可能也就我们那会儿,愿意花整整一个周末,就为了看一行 SELECT * FROM 乖乖返回结果。现在的人,大概连耐心看个加载动画都觉得浪费时间了。
书早合上了。代码也好久没碰。可偶尔翻翻手机相册,或者翻找几年前的邮件,脑子里还是会蹦出“检索”和“筛选”这两个词。估计每个人心里,都揣着一座自己的数据库。塞满了零碎的日常、没来得及说的话,还有偶尔冒出来的念头。咱们也许永远学不会怎么完美地存下它们。但至少,可以学着别急着点清空。光标还在闪,日子还得接着过。这事儿吧,急不得。慢慢查,慢慢筛,总能对上号。