private OleDbCommand GetCommand(string ConnStr,string SQL,params OleDbParameter[] Parameter)
{
conn = new OleDbConnection(ConnStr);
OleDbCommand cmd = new OleDbCommand(SQL,conn);
if (Parameter != null)
{
Parameter.Where(w => { cmd.Parameters.Add(w); return true; }).ToArray();
}
try
{
CloseConn();//判断数据库连接状态,如果是打开的话那么先关闭
conn.Open();
return cmd;
}
catch (Exception ex)
{
throw;
}
}代码不多,就这么点 这段代码神奇之处在于 如果我断点在conn.Open(); 这句停顿1秒中的话 那么代码完全正常没有任何错误 。但是如果不停顿1秒的话,则会报错错误是:“System.Transactions.Diagnostics.DiagnosticTrace”的类型初始值设定项引发异常。而且这段代码如果在独立的demo中运行的时候,完全正常,不会出错 除此之外,我现在本身的运行环境 是一个winFrom程序 我在程序里面添加了一个App.Config的配置文件 我现在初步估计错误原因跟这个App.Congig有关 不过还没找到原因还有各附带问题:右击项目解决方案 =>属性 里面的目标平台 我从x86改成了Any Cpu 现在在改回x86的时候项目无法运行...哪位接触过这一方面的,麻烦解释下这个目标平台是干什么的, 这样改了有没啥影响 我的系统是32位win7
至于你说的设断点出现的你认为奇怪的问题,建议你重建个测试项目再试一下。应该不存在。
这个问题应该是不存在的,
应该是其它问题引用的,
好好查找下
http://zhidao.baidu.com/question/235878960.html&__bd_tkn__=7bac4b36323cd131475ca260a2a263af8d268de38078338d51fed8133ea5c69d362ad36bb4bcda3b39bb3949f6bbe47087ac3af56e60b1f4e7eb60157a5ff83a9a6fa0fe5e0f03de0125277fdc41ca0f48059b71712abffed63f470b7c2e345fc9630d474fc1a9aaeb7bf8accbdc8c0bcd3427fe4ea8
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<!--如果需要调用对方的webservice请在此处配置-->
<add key="webServiceAddress" value="2222"/>
</appSettings>
<connectionStrings>
<!--需要导出的数据库连接信息-->
<add name="StartDB" connectionString="PROVIDER=SQLOLEDB;Data Source="/>
<!--需要导入的数据库连接信息-->
<add name="EndDB" connectionString="PROVIDER=SQLOLEDB;Data Source="/>
</connectionStrings>
<SQL>
<!--数据获取-->
<!--Params参数,SQL语句的参数 格式为 字段名+字段类型 多个参数使用 | 分隔-->
<StartDBSQL>
<SQL Params="Tset3+2|Tset2+2">SELECT Test,Test2,Tset3 FROM Table_1 WHERE Tset3=?</SQL>
</StartDBSQL>
<!--数据插入-->
<EndDBSQL>
<SQL Params="Test+?|Test2+?|Tset3+?">INSERT INTO Table_1(Test,Test2,Tset3) VALUES(?,?,?)</SQL>
</EndDBSQL>
</SQL>
</configuration>
可能跟垃圾回收机制有关,关闭后资源没有回收?
你得先等它关闭后再打开
我这里面目前1条SQL语句哦而且我试过将该语句硬编码到代码里去调用也不行,我估计是环境的问题
别共享,直接用了,用完丢,就好了,Connection最晚开,最早断,
直接用Using包起来。
CloseConn();// 判断数据库连接状态,如果是打开的话那么先关闭 //则会被关闭
conn.Open(); //再打开肯定会出异常,至于1秒问题可能是,又从连接池中获取,NET的DB关闭并不是真的直接与数据库断开,只是放回连接池,由连接池维护,具体可以参考相关文档.你改为如下试试:
if(conn !=null)
{
CloseConn();// 判断数据库连接状态,如果是打开的话那么先关闭
}
conn = new OleDbConnection(ConnStr);
conn.Open();
{
if(conn != null)
{
CloseConn();//判断数据库连接状态,如果是打开的话那么先关闭
}
conn = new OleDbConnection(ConnStr);
try
{
conn.Open();
OleDbCommand cmd = new OleDbCommand(SQL,conn);
if (Parameter != null)
{
Parameter.Where(w => { cmd.Parameters.Add(w); return true; }).ToArray();
}
return cmd;
}
catch (Exception ex) //还有此处,就是多余的,如果直接throw; 不需要加了,除非有自定义异常,
{
throw;
}
}
这个没关系的,先指定Command的条件在打开没问题的,这不存在什么先后的顺序,你只要保证在数据库操作在打开后能够获取数据即可
“System.Transactions.Diagnostics.DiagnosticTrace”的类型初始值设定项引发异
由于配置文件加入自定义标签引起改问题!~
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<Columns>
<filepath>D:\small03.xls</filepath>
<!--文件路径-->
<sheet>Sheet1</sheet>
<!--表名称-->
<filter>还款日期</filter>
<!--到期日期表头名称(这个名称不能错!根据这个筛选数据 )-->
<title>编号</title>
<title>姓名</title>
<title>年龄</title>
<title>借款金额</title>
<title>还款日期</title>
</Columns>
</configuration>
解决方法
app.config加入以下代码:
<configSections> <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" > <section name="ConvertData.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" /> </sectionGroup> </configSections>