用易语言操作MSSQL数据库的实战示例

1. 前言

在开发过程中,使用数据库来持久化数据是非常常见的做法。而MSSQL数据库是一款功能强大的关系型数据库,在企业级应用中被广泛使用。在本文中,我们将演示用易语言操作MSSQL数据库的实战示例,供大家参考。

2. 连接MSSQL数据库

2.1 加载ODBC模块

要操作MSSQL数据库,首先我们需要加载ODBC模块来获取数据库连接,代码如下:

#开启动态链接库

Lib "odbc32.dll"

#加载ODBC模块

Loadlib "odbc32.dll","SQLAllocHandle",03,&HandleType()

Loadlib "odbc32.dll","SQLBindCol",04,&HandleType(),04,&UInt(),04,&Int(),04,&Int()

Loadlib "odbc32.dll","SQLBindParam",04,&HandleType(),04,&UInt(),04,&Int(),04,&Int(),04,&Int(),04,&Ref

Loadlib "odbc32.dll","SQLCancel",02,&HandleType()

Loadlib "odbc32.dll","SQLCloseCursor",01,&UInt()

Loadlib "odbc32.dll","SQLConnect",09,&HandleType(),04,&Str(),04,&Int(),04,&Str(),04,&Int(),04,&Str(),04,&Int()

2.2 连接数据库

下面我们来连接MSSQL数据库,代码如下:

#定义数据库信息

Dim szDSName,szDBName,szUserName,szPassword

szDSName = "192.168.1.1\SQLSERVER" #数据库服务器地址

szDBName = "test_db" #数据库名称

szUserName = "sa" #数据库用户名

szPassword = "123456" #数据库密码

#声明ODBC连接相关信息

Dim hConn,hStmt,iRet,hDB

hConn = 0

hstmt = 0

iLen = 0

#连接数据库

iRet = SQLConnect(hConn,szDSName,StringLength(szDSName),szUserName,StringLength(szUserName),szPassword,StringLength(szPassword))

If iRet <> 0 Then

Call MessageBox(0, "Connect database failed !", "Error", 0)

Return

End If

iRet = SQLAllocHandle(&HandleType(), hConn)

If iRet <> 0 Then

Call MessageBox(0, "SQLAllocHandle Failed !", "Error", 0)

Return

End If

#选择数据库

iRet = SQLExecDirect(hStmt, "use" & " " & szDBName, StringLength("use" & " " & szDBName))

If iRet <> 0 Then

Call MessageBox(0, "Exec Direct Failed !", "Error", 0)

Return

End If

#设置默认编码

SQLExecDirect(hStmt,"SET NAMES UTF8",StringLength("SET NAMES UTF8"))

在以上代码中,我们首先定义了数据库服务器地址、数据库名称、数据库用户名及密码等信息,并声明了ODBC连接相关信息。接下来,我们使用SQLConnect方法连接数据库,并使用SQLAllocHandle方法分配ODBC连接句柄。最后,我们在SQLExecDirect方法中编写SQL语句来选择要连接的数据库,并设置默认编码。

3. 数据库操作

3.1 创建表

在MSSQL数据库中创建表的语句与其他关系型数据库类似,下面我们以创建学生表为例,代码如下:

#创建学生表

iRet = SQLExecDirect(hStmt, "CREATE TABLE IF NOT EXISTS students (id INT PRIMARY KEY, name VARCHAR(50), age INT, sex VARCHAR(10))", StringLength("CREATE TABLE IF NOT EXISTS students (id INT PRIMARY KEY, name VARCHAR(50), age INT, sex VARCHAR(10))"))

If iRet <> 0 Then

Call MessageBox(0, "Exec Direct Failed !", "Error", 0)

Return

End If

以上代码中,我们使用SQLExecDirect方法来执行SQL语句,SQL语句中定义了表名及字段信息,并使用IF NOT EXISTS关键字来判断表是否存在。

3.2 插入数据

接下来我们来插入一些数据到学生表中,代码如下:

#插入数据

iRet = SQLExecDirect(hStmt, "INSERT INTO students (id,name,age,sex) VALUES (1,'张三',18,'男')", StringLength("INSERT INTO students (id,name,age,sex) VALUES (1,'张三',18,'男')"))

If iRet <> 0 Then

Call MessageBox(0, "Exec Direct Failed !", "Error", 0)

Return

End If

在以上代码中,我们使用SQLExecDirect方法来执行SQL语句,SQL语句中定义了插入数据的表名及字段信息,VALUES关键字后面则是对应字段的具体值。

3.3 查询数据

我们已经创建了学生表,并往里面插入了一些数据,下面我们来查询数据,代码如下:

#查询数据

iRet = SQLExecDirect(hStmt, "SELECT * FROM students", StringLength("SELECT * FROM students"))

If iRet <> 0 Then

Call MessageBox(0, "Exec Direct Failed !", "Error", 0)

Return

End If

While (SQLFetch(hStmt) = 0)

#获取数据

SQLGetData(hStmt, 1, &dw, 4, &len);

SQLGetData(hStmt, 2, &strNam, 50, &len);

SQLGetData(hStmt, 3, &dwAge, 4, &len);

SQLGetData(hStmt, 4, &strSex, 10, &len);

End While

以上代码中,我们使用SQLExecDirect方法来执行SQL语句,SQL语句中定义了查询数据的表名及字段信息。接着,我们使用While循环和SQLFetch方法来获取数据,并使用SQLGetData方法来获取对应字段的具体值。

3.4 更新数据

接下来我们来更新学生表中的部分数据,代码如下:

#更新数据

iRet = SQLExecDirect(hStmt, "UPDATE students SET age = 20 WHERE id = 1", StringLength("UPDATE students SET age = 20 WHERE id = 1"))

If iRet <> 0 Then

Call MessageBox(0, "Exec Direct Failed !", "Error", 0)

Return

End If

在以上代码中,我们使用SQLExecDirect方法来执行SQL语句,SQL语句中定义了更新数据的表名、字段信息及更新条件。

3.5 删除数据

最后我们来删除学生表中的数据,代码如下:

#删除数据

iRet = SQLExecDirect(hStmt, "DELETE FROM students WHERE id = 1", StringLength("DELETE FROM students WHERE id = 1"))

If iRet <> 0 Then

Call MessageBox(0, "Exec Direct Failed !", "Error", 0)

Return

End If

在以上代码中,我们使用SQLExecDirect方法来执行SQL语句,SQL语句中定义了删除数据的表名及删除条件。

4. 关闭数据库连接

在操作完成后,我们需要关闭数据库连接,代码如下:

#关闭连接

iRet = SQLDisconnect(hConn)

If iRet <> 0 Then

Call MessageBox(0, "Exec Direct Failed !", "Error", 0)

Return

End If

在以上代码中,我们使用SQLDisconnect方法来关闭数据库连接。

5. 总结

本文中,我们演示了用易语言操作MSSQL数据库的实战示例。我们使用ODBC模块来获取数据库连接,并操作数据库来创建表、插入数据、查询数据、更新数据及删除数据等操作。希望这篇文章能够帮助大家更好地理解和使用MSSQL数据库。

数据库标签