您好我正在连接到postgres数据库并将数据传输到我的本地计算机。
这是我的代码:
public DataTable GetDataTable(string sql)
{
var conn = GetOpenConnection();
var dt = new DataTable();
var cmd = conn.CreateCommand();
cmd.CommandText = sql;
NpgsqlDataReader dr = null;
try
{
dr = cmd.ExecuteReader();
dt.Load(dr);
}
catch (Exception ex)
{
Log.Info(ex);
throw;
}
finally
{
dr.Close();
conn.Close();
}
return dt;
}
以下方案正常
sql =“SELECT * FROM test_db”
sql =“SELECT * FROM testdb”
但是; sql =“SELECT * FROM testDb”然后我得到了异常
错误42P01“testdb”不存在
我注意到几张桌子。如果我每次抛出异常时都使用camelcase数据表的名称。 这是我得到异常的代码
dr = cmd.ExecuteReader();
所以我想知道我不能调用camelCase表吗? 这是什么最好的解决方案?
感谢您的反馈和解答! 谢谢
答案 0 :(得分:0)
如果您对实施ORM感兴趣,我很幸运使用MicroLite ORM和Npgsql .Net数据提供程序连接到Postgres数据库。不完全是你想要的,但它是一个可以解决你的问题的选择。 https://github.com/TrevorPilley/MicroLite/wiki
您可以在下面看到我使用[Table(" Mail")]指定表名称非常容易使用CamelCase或任何您想要的。
using System;
using MicroLite.Mapping;
using MicroLite;
namespace MailOut.Model
{
[Table("Mail")]
public class Email
{
[Identifier(IdentifierStrategy.DbGenerated)]
[Column("priKey")]
public Int64 PriKey { get; set; }
[Column("toemail")]
public string ToEmail { get; set; }
[Column("fromemail")]
public string FromEmail { get; set; }
[Column("body")]
public string Body { get; set; }
}
}