c# - Windows 服务的 C# 代码在执行 ExecuteReader() 期间抛出异常
问题描述
在执行 Windows 服务的 C# 代码时,executereader 函数读取SELECT查询代码抛出异常
“由于对象的当前状态,操作无效。
我已经使用相同的代码在 Windows 窗体的 C# 代码中连接到 oracle 数据库。那里一切都很好。我什至使用了 ExecuteNonQuery 函数,但没有任何帮助。
namespace test
{
public partial class Service1 : ServiceBase
{
Timer timer = new Timer();
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
System.Diagnostics.Debugger.Launch();
timer.Elapsed += new ElapsedEventHandler(OnElapsedTime);
timer.Interval = 10000;
timer.Enabled = true;
ccpwrm();
}
protected override void OnStop()
{
timer.Enabled = false;
}
public static void ccpwrm()
{
OracleConnection con = new OracleConnection("User Id=ISCRMRT;Password=ISCRMRT;Data Source=(DESCRIPTION =(ADDRESS = (PROTOCOL = tcp)(HOST = Level-2-Gateway)(PORT = 1521)) (CONNECT_DATA =(SERVICE_NAME = LEVEL2)))");
OracleCommand comnd = new OracleCommand();
con.Open();
comnd.CommandText = "select * from CCP_BILLET";
OracleDataReader read = comnd.ExecuteReader();
while (read.Read())
{
FileStream fs = new FileStream(@"d:\TestServiceLog.txt", FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs);
sw.BaseStream.Seek(0, SeekOrigin.End);
sw.WriteLine(read[0].ToString().TrimEnd());
sw.WriteLine(read[4].ToString().TrimEnd());
sw.Flush();
sw.Close();
}
con.Close();
}
private void OnElapsedTime(object source, ElapsedEventArgs e)
{
ccpwrm();
}
}
}
我希望将 oracle 表中的选定列写入文件,但代码总是停留在同一点,即ExecuteReader()
语句。
解决方案
我相信这个问题是因为 OracleCommand 与 OracleConnection 没有关联。
尝试在 OracleCommand 构造函数中传递连接,或设置 Connection 属性。
OracleCommand comnd = new OracleCommand("select * from CCP_BILLET", con);
或者
comnd.Connection = con;
推荐阅读
- r - ggplot2 和 R - 将自定义颜色应用于长格式的多组直方图
- django - 我不断收到此错误:TypeError: data.map is not a function
- sql - 包含所有信息和结构的备份表
- angularjs - AngularJS | 为同一控制器的特定实例处理 $broadcast 和 $on
- reactjs - 在不重新渲染循环的情况下循环和修改对象的正确方法
- vue.js - 如何将组件的逻辑放在文件 .vue 本身之外
- javascript - 用户输入正确的用户名和密码后,如何使提交按钮重定向到另一个页面?
- node.js - 错误:运行 firebase init 时找不到模块“fast-safe-stringify”
- c - 将二叉树转换为简单链表
- node.js - 自托管 APIM 开发人员门户:无法使用“npm run publish”在本地发布