每次想做个动态网站,结果卡在数据库连接这一步?数据库连接难题,如何轻松搭建动态网站?
新手必看:数据库连接其实就是找钥匙开门
咱们把ASP连接数据库想成开保险箱就对了。那个保险箱就是你的数据库,而连接字符串就是钥匙串。这里头必须要有三个关键信息:保险箱位置(数据库地址)、开锁密码(账号密码)、开锁手法(驱动类型)。举个实在的例子,就像你要开小区快递柜,得知道柜子编号、取件码和用哪家快递公司的APP对吧?
第一步:找到你的数据库钥匙——连接字符串
这里分两种情况,咱们新手先别急着上复杂的SQL Server,从Access数据库练手最实在。给你个万能钥匙模板:
asp复制<%Dim connSet conn = Server.CreateObject("ADODB.Connection")conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/data/mydb.mdb")%>
注意看这个结构:
- Provider= 相当于说"我要用京东快递开柜"
- Data Source= 就是快递柜的具体位置
- Server.MapPath这个函数特别重要,它能把相对路径转成服务器看得懂的绝对路径
要是换成MySQL数据库,钥匙串就变成这样:
asp复制conn.Open "DRIVER={MySQL ODBC 8.0 Driver};Server=localhost;Database=mydb;Uid=root;Pwd=123456;"
这里有个血泪教训:去年有个兄弟把Driver写成了"MySQL ODBC 5.1",结果折腾三天三夜没连上。
第二步:开锁后要做的三件事
- 查水表(执行查询)
asp复制Set rs = conn.Execute("SELECT * FROM users WHERE age>18")Do While Not rs.EOFResponse.Write "用户名:" & rs("username") & "
"rs.MoveNextLoop
- 交水电费(增删改)
asp复制conn.Execute "INSERT INTO orders (product,price) VALUES ('手机',2999)"
- 临走锁门(关闭连接)
asp复制rs.Closeconn.CloseSet conn = Nothing
这里最容易忘的就是最后这个Set conn = Nothing,跟咱们用完煤气要关阀门一个道理。
新手必踩的五个坑
坑位描述 | 正确姿势 | 错误案例 |
---|---|---|
路径写 *** 不会变通 | 用Server.MapPath转换 | "D:wwwrootdata.mdb" |
驱动版本对不上号 | 查官网驱动对照表 | MySQL8用5.1驱动 |
密码带特殊符号 | 用单引号包裹密码 | Pwd=abc#123 |
忘记释放对象 | 必写Set xx=Nothing | 只写Close不写Set |
全屏 *** | 开头加On Error Resume Next | 页面显示黄底红字 |
去年有个妹子把数据库放在桌面路径,结果网站上线后天天报错,就是因为没转换路径。
灵魂拷问:为什么我照着教程做还是连不上?
问题1:明明密码正确却说登录失败?
八成是权限问题!比如Access数据库文件要设置IIS用户的读写权限,这个就像你拿自家钥匙开邻居家门,能打开才见鬼了。
问题2:本机测试好好的,上传到服务器就报错?
常见两种情况:要么服务器没装对应驱动,就像你带着奥迪车钥匙去开宝马;要么数据库路径没跟着变,好比把快递柜从1号楼搬到2号楼了还按原地址取件。
问题3:连接时总提示超时?
试着在连接字符串最后加个"Connection Timeout=30",这个相当于跟服务器说"我给你半分钟时间开门,开不开我就撤了"。要是还不行,可能数据库服务压根没启动,就像快递柜根本没通电。
小编私房话
最近发现个邪门现象:用老版的MDAC2.8连接Access,成功率比新驱动还高。这事就像现在智能手机再先进,有些老人还是觉得座机靠谱。建议大家在建站初期,先用Access练手,等玩明白了再上MySQL这些大块头。记住,数据库连接这事儿,本质上就是个不断试错的过程,当年我为了搞明白一个报错信息,愣是把电脑日期格式从"yyyy/mm/dd"改成"yyyy-mm-dd"才解决,你说神不神奇?