达梦数据闸连接问题 返回
我两个环境,一个是公司的达梦库,另外一个是客户现场的达梦库,但是客户现场的达梦库连接一直有问题,我写了一个测试程序,如果是用达梦本身的写法可以连接,但是用Sqlsugar的链接会报错;我写了一个测试程序,分别放3个按钮,第1个按钮,第2个按钮都使用原生的写法可以连接达梦数据库(公司环境也可以,达梦环境也可以),但是第三个按钮事件在公司库可以,在客户现场不行;
private void button1_Click(object sender, EventArgs e)
{
try
{
// 连接测试
DmConnection conn = new DmConnection();
conn.ConnectionString = textBox1.Text;
conn.Open();
Console.WriteLine("dmprovider: connect success!");
conn.Close();
MessageBox.Show("连接成功!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
//Console.WriteLine(ex.Message);
}
}
private void button2_Click(object sender, EventArgs e)
{
// 达梦数据库连接字符串
string connStr = textBox1.Text;
// SQL 语句(可替换为你的查询语句)
string sql = "SELECT * FROM EMR_TPL_INDEX;";
DataSet ds = new DataSet();
// 建立连接并执行查询
using (DmConnection conn = new DmConnection(connStr))
{
try
{
conn.Open(); // 打开连接
// 创建数据适配器
using (DmDataAdapter adapter = new DmDataAdapter(sql, conn))
{
// 填充 DataSet(可指定表名,默认是 Table)
adapter.Fill(ds, "ResultTable");
}
// 处理结果
if (ds.Tables.Count > 0)
{
//DataTable dt = ds.Tables["ResultTable"];
////Console.WriteLine($"查询到 {dt.Rows.Count} 条数据");
//// 遍历数据示例
//foreach (DataRow row in dt.Rows)
//{
// Console.WriteLine(row["COLUMN_NAME"]); // 替换为实际列名
//}
}
MessageBox.Show("查询成功!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
//Console.WriteLine("错误:" + ex.Message);
}
finally
{
if (conn.State == ConnectionState.Open)
conn.Close();
}
}
}
private void button3_Click(object sender, EventArgs e)
{
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
{
DbType = DbType.Dm,
ConnectionString = textBox1.Text,
IsAutoCloseConnection = true,
MoreSettings = new ConnMoreSettings()
{
IsAutoToUpper = false //禁用自动转成大写表 5.1.3.41-preview04
}
});
var list = db.DbMaintenance.GetColumnInfosByTableName("TPL_INDEX");
foreach (var item in list)
{
}
MessageBox.Show("SqlSugar查询成功!");
}
这是一个错误的大概日志:
日志时间:2025-10-19 22:40:56
日志类型:普通消息
信息:SqlSugar.SqlSugarException: 中文提示 : 连接数据库过程中发生错误,检查服务器是否正常连接字符串是否正确,错误信息:6001,[10.117.14.1:14236 (UNKNOW, UNKNOW)]Fail to establish connection
DbType="Dm";ConfigId="".
English Message : Connection open error . 6001,[192.168.1.110:14236 (UNKNOW, UNKNOW)]Fail to establish connection
DbType="Dm";ConfigId=""
在 SqlSugar.Check.Exception(Boolean isException, String message, String[] args)
在 SqlSugar.AdoProvider.CheckConnection()
在 SqlSugar.DmProvider.GetCommand(String sql, SugarParameter[] parameters)
在 SqlSugar.AdoProvider.GetDataSetAll(String sql, SugarParameter[] parameters)
在 SqlSugar.AdoProvider.GetDataTable(String sql, SugarParameter[] parameters)
在 OMS.DataTool.Client.Extention.CDbExtention.GetMyTablePrimaryKeyList(SqlSugarClient db, String tableName)
在 OMS.DataTool.Client.FrmInOrOutInitData.RemoveRowsWithExistingKeys(DataTable importDt, SqlSugarClient db)
在 OMS.DataTool.Client.FrmInOrOutInitData.StartImportData(DataTable dataTable)
在 OMS.DataTool.Client.FrmInOrOutInitData.DoImportData(List`1 listTableName)
在 OMS.DataTool.Client.FrmInOrOutInitData.<>c__DisplayClass48_0.<BtnSelectImprt_Click>b__0()
在 System.Threading.Tasks.Task`1.InnerInvoke()
在 System.Threading.Tasks.Task.Execute()
热忱回答(14)
-
^.^ 疯篮球 VIP0
1个月前我用的是winform写的程序,.net framework 4.8
0 回复 -
fate sta VIP0
1个月前在 System.Threading.Tasks.Task.Execute()
明显用到线程了,你给的代码都没写用到线程。
0 回复 -
fate sta VIP0
1个月前db.Ado.GetDataTable(sql); 等比测试应该是这样吧
0 回复 -
fate sta VIP0
1个月前还有疑问提供一个DEMO
一个ADO的按钮,一个达梦按钮能重现的
0 回复 -
^.^ 疯篮球 VIP0
1个月前不是,错误日志是我之前的,我重新将错误日志写出,
SqlSugar.SqlSugarException: 中文提示 : 连接数据库过程中发生错误,检查服务器是否正常连接字符串是否正确,错误信息:6001,[10.117.14.1:14236 (UNKNOW, UNKNOW)]Fail to establish connection
DbType="Dm";ConfigId="".
English Message : Connection open error . 6001,[192.168.1.110:14236 (UNKNOW, UNKNOW)]Fail to establish connection
DbType="Dm";ConfigId=""
在 SqlSugar.Check.Exception(Boolean isException, String message, String[] args)
在 SqlSugar.AdoProvider.CheckConnection()
在 SqlSugar.DmProvider.GetCommand(String sql, SugarParameter[] parameters)
在 SqlSugar.AdoProvider.GetDataReader(String sql, SugarParameter[] parameters)
在 SqlSugar.DmDbMaintenance.GetColumnInfosByTableName(String tableName)
在 SqlSugar.DmDbMaintenance.<>c__DisplayClass81_0.<GetColumnInfosByTableName>b__0()
在 SqlSugar.ReflectionInoCore`1.GetOrCreate(String cacheKey, Func`1 create)
在 SqlSugar.ReflectionInoCacheService.GetOrCreate[V](String cacheKey, Func`1 create, Int32 cacheDurationInSeconds)
在 SqlSugar.DmDbMaintenance.GetColumnInfosByTableName(String tableName, Boolean isCache)
在 WindowsFormsApp4._8.Form1.button3_Click(Object sender, EventArgs e)
0 回复 -
^.^ 疯篮球 VIP0
1个月前第三个按钮 “异常按钮”
0 回复 -
^.^ 疯篮球 VIP0
1个月前有异常的达梦库版本号:--03134284368-20250930-295459-20149 Pack37;
不会有异常的达梦库版本号:--03134284368-20250430-272000-20149 Pack1
0 回复 -
fate sta VIP0
1个月前你DEMO写的例子都不一样
0 回复 -
fate sta VIP0
1个月前这样才一样
0 回复 -
^.^ 疯篮球 VIP0
1个月前就是这个地方在202509的达梦版本中会报错
0 回复 -
fate sta VIP0
1个月前private void button3_Click(object sender, EventArgs e) { try { using (DmConnection conn = new DmConnection(textBox1.Text)) { SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { DbType = DbType.Dm, ConnectionString = textBox1.Text, IsAutoCloseConnection = true, MoreSettings = new ConnMoreSettings() { IsAutoToUpper = false //禁用自动转成大写表 5.1.3.41-preview04 } }); // SQL 语句(可替换为你的查询语句) string sql = "SELECT * FROM EMR_TPL_INDEX;"; db.Ado.Connection = conn; conn.Open(); var list = db.Ado.GetDataSetAll(sql); MessageBox.Show("SqlSugar查询成功!"); } } catch (Exception ex) { MessageBox.Show(ex.Message); Write(ex.ToString()); } }改成这样试一下哪行代码了错
0 回复 -
^.^ 疯篮球 VIP0
1个月前这个代码运行可以成功,没有报错
0 回复 -
fate sta VIP0
1个月前privatevoidbutton3_Click(objectsender, EventArgs e){try{SqlSugarClient db =newSqlSugarClient(newConnectionConfig(){DbType = DbType.Dm,ConnectionString = textBox1.Text,IsAutoCloseConnection =true,MoreSettings =newConnMoreSettings(){IsAutoToUpper =false//禁用自动转成大写表 5.1.3.41-preview04}});// SQL 语句(可替换为你的查询语句)stringsql ="SELECT * FROM EMR_TPL_INDEX;";varlist = db.Ado.GetDataSetAll(sql);MessageBox.Show("SqlSugar查询成功!");}}catch(Exception ex){MessageBox.Show(ex.Message);Write(ex.ToString());}}这样呢
0 回复 -
fate sta VIP0
1个月前你这个问题好像以前有人遇到过。是安装的达梦要替换个DLL记得。
实在不行就改成
db.ado.connection=new dmconnection这种方式
0 回复