本文介绍如何通过Java、Python或C的应用程序访问RDS数据库。

参数说明

示例代码中的参数说明如下。

参数 说明
Host RDS实例的内网地址或外网地址。
  • 若您的客户端部署在ECS实例上,且ECS实例与要访问的RDS实例的地域、网络类型相同,请使用内网地址。例如ECS实例和RDS实例都是华东1的专有网络实例,使用内网地址连接能提供安全高效的访问。
  • 其它情况只能使用外网地址。

关于如何查看RDS实例的内外网地址及端口信息,请参见查看或修改内外网地址和端口

Port 若使用内网连接,需输入RDS实例的内网端口。若使用外网连接,需输入RDS实例的外网端口。
myDatabase 目标数据库名称。
myUsername 要访问RDS实例的账号名称。
myPassword 账号对应的密码。

示例代码

  • Java示例代码:
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    
    public class DatabaseConnection
    {
        public static void main(String args[]) {
            String connectionUrl= "jdbc:mysql://<Host>:<Port>/<myDatabase>";    
    
            ResultSet resultSet;
    
            try (Connection connection=DriverManager.getConnection(connectionUrl,"<myUsername>","<myPassword>");  
                 Statement statement = connection.createStatement()) {
    
                String selectSql = "SELECT * FROM `courses`";            //输入希望执行的SQL。
                resultSet = statement.executeQuery(selectSql);
    
                while (resultSet.next()) {
                    System.out.println(resultSet.getString("name"));
                }
            }
            catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
  • Python示例代码:
    import pymysql
    
    connection = pymysql.connect(host='<Host>',     
                           port=<Port>,
                           user='<myUsername>',
                           passwd='<myPassword>',
                           db='<myDatabase>')
    
    try:
        with connection.cursor() as cursor:
            sql = "SELECT * FROM `courses`"        //输入希望执行的SQL。
            cursor.execute(sql)
            for result in cursor:
                 print(result)
    finally:
        connection.close()
  • C示例代码:
    #include <stdio.h>
    #include <mysql.h>
    #include <string.h>
    
    void main(void)
    {
        MYSQL *t_mysql;
    
        MYSQL_RES       *res = NULL;
        MYSQL_ROW       row;
        char            *query_str = NULL;
        int             rc, i, fields;
        int             rows;
    
        char select[] = "select * from courses";    // 输入希望执行的SQL。
        t_mysql = mysql_init(NULL);
    
        if(NULL == t_mysql){
            printf("init failed\n");
        }
    
        if(NULL == mysql_real_connect(t_mysql, <Host>, <myUsername>, <myPassword>, <myDatabase>,
                <Port>, NULL, 0)){
            printf("connect failed\n");
        }
    
        if(mysql_real_query(t_mysql, select, strlen(select)) != 0){
            printf("select failed\n");
        }
    
        res = mysql_store_result(t_mysql);
        if (NULL == res) {
             printf("mysql_restore_result(): %s\n", mysql_error(t_mysql));
             return -1;
        }
    
        fields = mysql_num_fields(res);
        while ((row = mysql_fetch_row(res))) {
            for (i = 0; i < fields; i++) {
                printf("%s\t", row[i]);
            }
            printf("\n");
        }
        mysql_close(t_mysql);
    
    }
                        

连接失败

连接失败时,建议根据报错信息来解决连接问题。