我导入Sybase.Data.AseClient.dll
我的 C# 项目以连接到 sybase 数据库并查询类似这样的内容
private DataSet query(string jjoprid)
{
string queryStr = "select oprid, oprname,orgid,lastmodified from SA_CXTC_OPRINFO where oprid = \"" + jjoprid + "\";";
DataSet ds ;
try
{
conn = new AseConnection("Data Source=192.168.100.251;database=thq;" +
"charset=cp936;Port=7000;UID=snhqdbo;PWD=janhq@ary");
command = new AseCommand(queryStr, conn);
adapter = new AseDataAdapter(command);
ds = new DataSet();
adapter.Fill(ds);
}
catch (AseException ex)
{
Console.WriteLine(ex.Message);
return null;
}
finally
{
if (null != conn)
conn.Close();
}
return ds ;
}
奇怪的是,我得到了这样的异常
捕获 Sybase.Data.AseClient.AseException 消息=客户端字符集“cp936”和服务器字符集“iso_1”之间的字符集转换不可用。 源=Sybase.Data.AseClient 堆栈跟踪: 在 Sybase.Data.AseClient.AseConnectionImpl.CheckResult(Int32 res,Boolean forOpen) 在 Sybase.Data.AseClient.AseConnectionImpl.Open() 在 Sybase.Data.AseClient.AseConnectionPool.GetConnection(AseConnection conn) 在 Sybase.Data.AseClient.AseConnectionPoolManager.GetConnection(字符串 connectionString,AseConnection conn) 在 Sybase.Data.AseClient.AseConnection.Open() System.Data.Common.DbDataAdapter.FillInternal(DataSet 数据集,DataTable[] 数据表,Int32 startRecord,Int32 maxRecords,String srcTable,IDbCommand 命令,CommandBehavior 行为) 在 System.Data.Common.DbDataAdapter.Fill(DataSet 数据集,Int32 startRecord,Int32 maxRecords,String srcTable,IDbCommand 命令,CommandBehavior 行为) 在 System.Data.Common.DbDataAdapter.Fill(数据集数据集) 在 CXTC运维.Form1.query(String jjoprid) 位置 d:\Documents and Settings\11075452\My Documents\Visual Studio 2010\Projects\CXTC运维\CXTC运维\Form1.cs:行号 41 内部异常:
它表明客户端字符和服务器字符之间的冲突,但我不知道如何解决这个问题,任何人都可以帮助我吗?
谢谢你,帕拉多,我听从了你的建议,得到了这个
捕获 Sybase.Data.AseClient.AseException 消息=尝试在 sysdatabases 中按名称查找数据库 'thq' 的条目失败 - 在该名称下找不到条目。确保正确输入了该名称。 源=Sybase.Data.AseClient 堆栈跟踪: 在 Sybase.Data.AseClient.AseConnectionImpl.CheckResult(Int32 res,Boolean forOpen) 在 Sybase.Data.AseClient.AseConnectionImpl.Open() 在 Sybase.Data.AseClient.AseConnectionPool.GetConnection(AseConnection conn) 在 Sybase.Data.AseClient.AseConnectionPoolManager.GetConnection(字符串 connectionString,AseConnection conn) 在 Sybase.Data.AseClient.AseConnection.Open() 在 System.Data.Common.DbDataAdapter.FillInternal(DataSet 数据集,DataTable[] 数据表,Int32 startRecord,Int32 maxRecords,String srcTable,IDbCommand 命令,CommandBehavior 行为) 在 System.Data.Common.DbDataAdapter.Fill(DataSet 数据集,Int32 startRecord,Int32 maxRecords,String srcTable,IDbCommand 命令,CommandBehavior 行为) 在 System.Data.Common.DbDataAdapter.Fill(数据集数据集) 在CXTC运维.Form