mssql_io 0.0.4
mssql_io: ^0.0.4 copied to clipboard
Flutter plugin for Microsoft SQL Server using FFI and FreeTDS. Cross-platform support.
MSSQL IO #
Flutter plugin for Microsoft SQL Server. Works on Android, iOS, Windows, macOS, Linux, and Web.
Installation #
dependencies:
mssql_io: ^0.0.4
Quick Setup #
The plugin will build without FreeTDS (stub implementation), but you need FreeTDS for actual database connections.
Android Setup #
-
Build FreeTDS for Android (one-time, ~15-20 minutes):
cd android chmod +x build_freetds.sh ./build_freetds.shRequires: Android NDK (set
ANDROID_NDK_HOMEor install via Android Studio) -
Rebuild your app:
flutter clean flutter pub get flutter build apk
iOS Setup #
-
Build FreeTDS for iOS (one-time, ~10-15 minutes, macOS only):
cd ios chmod +x build_freetds.sh ./build_freetds.shRequires: Xcode, CMake (
brew install cmake) -
Install pods (builds native library automatically):
cd ios pod install cd .. flutter clean flutter pub get flutter run
Desktop Setup #
brew install freetds # macOS
sudo apt-get install freetds-dev # Linux
vcpkg install freetds:x64-windows # Windows
Web Setup #
Requires backend API proxy. See Web Platform section.
Usage #
import 'package:mssql_io/mssql_io.dart';
final request = MssqlConnection.getInstance();
// Connect
await request.connect(
host: '192.168.1.100',
databaseName: 'MyDB',
username: 'sa',
password: 'Password123',
);
// Query
final result = await request.getData('SELECT * FROM Users');
// Parameterized query (prevents SQL injection)
final users = await request.getDataWithParams(
'SELECT * FROM Users WHERE Age > @age',
[SqlParameter(name: 'age', value: 18)],
);
// Insert with parameters
await request.writeDataWithParams(
'INSERT INTO Users (Name, Email) VALUES (@name, @email)',
[SqlParameter(name: 'name', value: 'Alice'),
SqlParameter(name: 'email', value: 'alice@example.com')],
);
// Transaction
await request.beginTransaction();
try {
await request.writeData('INSERT INTO Orders VALUES (1, 99.99)');
await request.commit();
} catch (e) {
await request.rollback();
}
await request.disconnect();
API #
connect()/disconnect()- ConnectiongetData()/getDataWithParams()- QuerieswriteData()/writeDataWithParams()- Insert/Update/DeletebeginTransaction()/commit()/rollback()- TransactionsbulkInsert()- Batch operations
Security #
Always use parameterized queries:
// Safe
await request.getDataWithParams('SELECT * FROM Users WHERE Name = @name',
[SqlParameter(name: 'name', value: userInput)]);
// Unsafe!
await request.getData("SELECT * FROM Users WHERE Name = '$userInput'");
Troubleshooting #
Can't connect?
- Check SQL Server is running on port 1433
- Test:
telnet your-server 1433
Library not found?
- Mobile: Run
./build_freetds.shin android/ or ios/ - Desktop: Install FreeTDS