多语言 JDBC SQL 发送
多语言 JDBC SQL 发送
记录各个语言使用 JDBC 发送 SQL 的代码片段。
Python
import jaydebeapi
# pip install jaydebeapi
# JDBC驱动类名
driver = 'com.mysql.jdbc.Driver'
# 数据库连接URL
url = 'jdbc:mysql://hostname:port/databasename?characterEncoding=UTF-8&serverTimezone=UTC'
# 数据库用户名
user = 'username'
# 数据库密码
password = 'password'
# JDBC驱动JAR文件路径
jarFile = 'path_to_your_jdbc_driver.jar'
# 使用jaydebeapi.connect函数建立数据库连接
conn = jaydebeapi.connect(jclassname=driver, url=url, driver_args=[user, password], jars=jarFile)
# 创建游标并执行SQL语句
curs = conn.cursor()
curs.execute('SELECT * FROM your_table')
# 获取查询结果
results = curs.fetchall()
# 打印结果
for row in results:
print(row)
# 关闭游标和连接
curs.close()
conn.close()
Java
// javac -cp ".:./mysql-connector-java-8.0.27.jar:." JdbcDemo.java
// java -cp ".:./mysql-connector-java-8.0.27.jar:." JdbcDemo
// windows 中用 ; 分隔路径, linux 中用 : 分隔路径
import java.sql.*;
public class JdbcDemo {
public static void main(String[] args) {
String url = "jdbc:mysql://hostname:port/databasename";
String user = "username";
String password = "password";
try {
// 加载驱动类
Class.forName("com.mysql.cj.jdbc.Driver");
// 建立连接
Connection conn = DriverManager.getConnection(url, user, password);
// 创建Statement对象
Statement stmt = conn.createStatement();
// 执行查询
ResultSet rs = stmt.executeQuery("SELECT * FROM your_table");
// 处理查询结果
while (rs.next()) {
// 获取并使用数据
int id = rs.getInt("id");
String data = rs.getString("data");
// ...
}
// 清理环境
rs.close();
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
C++
# 将上面的 JdbcDemo 使用 javah 编译
javah -jni -o JdbcDemo.h JdbcDemo
#include <jni.h>
#include "JdbcDemo.h"
int main() {
JavaVM *jvm;
JNIEnv *env;
JavaVMInitArgs vm_args;
JavaVMOption options[1];
options[0].optionString = "-Djava.class.path=."; // 指定类路径
options[0].extraInfo = NULL;
vm_args.version = JNI_VERSION_1_6;
vm_args.nOptions = 1;
vm_args.options = options;
vm_args.ignoreUnrecognized = JNI_TRUE;
jint res = JNI_CreateJavaVM(&jvm, (void **)&env, &vm_args);
if (res < 0) {
std::cerr << "Failed to create JVM" << std::endl;
return 1;
}
// 获取JdbcDemo类
jclass cls = env->FindClass("JdbcDemo");
if (cls == NULL) {
std::cerr << "Class not found" << std::endl;
return 1;
}
// 调用main方法
env->CallStaticVoidMethod(cls, env->GetStaticMethodID(cls, "main", "()V"));
// 销毁JVM
jvm->DestroyJavaVM();
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧