using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.Odbc;
using System.Data;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
DataSet ds = new DataSet();
DataTable dt = new DataTable();
// Server, e.g. "examplecluster.xyz.us-west-2.redshift.amazonaws.com"
string server = "examplecluster.xyz.us-west-2.redshift.amazonaws.com";
// Port, e.g. "5439"
string port = "5439";
// MasterUserName, e.g. "masteruser".
string masterUsername = "*****";
// MasterUserPassword, e.g. "mypassword".
string masterUserPassword = "*****";
// DBName, e.g. "dev"
string DBName = "dev";
string query = "select * from suppliers";
try
{
string connString = "Driver={Amazon Redshift (x64)};" +
String.Format("Server={0};Database={1};" +
"UID={2};PWD={3};Port={4};SSL=true;Sslmode=Require",
server, DBName, masterUsername,
masterUserPassword, port);
using (OdbcConnection conn = new OdbcConnection(connString))
{
conn.Open();
string sql = query;
OdbcDataAdapter da = new OdbcDataAdapter(sql, conn);
da.Fill(ds);
dt = ds.Tables[0];
conn.Close();
Console.ReadLine();
}
}
catch (Exception ex) { }
}
}
}
正在尝试将此代码连接到我的redshift集群,但是在连接时出现问题,因为服务器中断引发了异常system.invalidoperation ,通过.net连接到redshift的任何其他方式,我都更喜欢已经在我的项目中为Amazon添加了ODBC
答案 0 :(得分:0)
之所以能够解决问题,是由于使用了错误的odbc驱动程序版本,并且正在使用64位版本,而IIS是32位的,因此将ODBC版本更改为32,并且可以正常工作