| … | ||
|---|---|---|
| .. | ||
| README.md | ||
| _cdef_nix.c.v | ||
| _cdef_windows.c.v | ||
| _cdefs.c.v | ||
| config.v | ||
| mssql.v | ||
| result.v | ||
| stmt_handle.v | ||
		
			
				
				README.md
			
		
		
			
			
		
	
	SQL Server ODBC
- This is a V wrapper of SQL Server ODBC C/C++ library
Dependencies
- ODBC C/C++ library
- Linux Install:
- Details: https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server
- msodbcsql17and- unixodbc-devpackages are needed
 
- Windows Install:
- odbclib is included in windows sdk for most of distributions, so there is no need to install it separately
- Details: https://docs.microsoft.com/en-us/sql/connect/odbc/microsoft-odbc-driver-for-sql-server
 
 
- Linux Install:
Windows Notes
Using msvc
- Make sure cl.exeofmsvcis accessible from command line. You can runvcommands inVisual Studio 2019 Developer Command Promptto be safe.
- C Headers and dlls can be automatically resolved by msvc.
Using tcc
- Copy those headers to @VEXEROOT\thirdparty\mssql\include. The version number10.0.18362.0might differ on your system. Command Prompt commands:
copy "C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\sql.h" thirdparty\mssql\include
copy "C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\sqlext.h" thirdparty\mssql\include
copy "C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\sqltypes.h" thirdparty\mssql\include
copy "C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\sqlucode.h" thirdparty\mssql\include
copy "C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\sal.h" thirdparty\mssql\include
copy "C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\concurrencysal.h" thirdparty\mssql\include
- dlls can be automatically resolved by tcc
TODO
- Support Mac
- Support ORM
Usage
import mssql
fn test_example() ? {
	// connect to server
	config := mssql.Config{
		driver: 'ODBC Driver 17 for SQL Server'
		server: 'tcp:localhost'
		uid: '<your username>'
		pwd: '<your password>'
	}
	mut conn := mssql.Connection{}
	conn.connect(config.get_conn_str()) ?
	defer {
		conn.close()
	}
	// get current db name
	mut query := 'SELECT DB_NAME()'
	mut res := conn.query(query) ?
	assert res == mssql.Result{
		rows: [mssql.Row{
			vals: ['master']
		}]
		num_rows_affected: -1
	}
}