我写了个类DBcon.cs,主要读取XML获取数据库连接串using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data.OracleClient;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Web;
using System.Xml;namespace test
{
class DBcon
{
public OracleConnection DataOpen()
{
string USERID, PASSWORD, DATASOURCE;
XmlTextReader reader = new XmlTextReader(".\\dataconfig.xml");
DataSet myDs = new DataSet();
myDs.ReadXml(reader);
DataRow myDataRow = myDs.Tables[0].Rows[0];
USERID = myDataRow["userid"].ToString();
PASSWORD = myDataRow["password"].ToString();
DATASOURCE = myDataRow["DataSource"].ToString();
string sqlString = "Data Source=" + DATASOURCE + ";user id=" + USERID + ";password =" + PASSWORD + "";
OracleConnection con = new OracleConnection(sqlString);
//myDs.Dispose();
//con.Open();
return con ;
}
}
}
通过另外一个窗体去调用上面类的值:
private void button1_Click(object sender, EventArgs e)
{
if (names.Text.Trim() == "")
{
MessageBox.Show("用户名不能为空!", "提示信息");
names.Focus();
return;
}
if (pwd.Text.Trim() == "")
{
MessageBox.Show("密码不能为空!", "提示信息");
pwd.Focus();
return;
}
int i = 0;
DBcon conn = new DBcon();//通过方法调用
conn.DataOpen();
OracleConnection connection = new OracleConnection();
connection.Open();//提示ConnectionString 属性尚未初始化
{
string sql = "select count(*) from PACSUSER where test01='" + names.Text.Trim() + "' and test02='" + password1 + "'";
using (OracleCommand cmd = connection.CreateCommand())
{
cmd.CommandText = sql;
i = (int)Convert.ToInt32(cmd.ExecuteScalar());
}
}
if (i > 0)
{
bl = true;
this.Close();
MainForm MF = new MainForm();
MF.Show();
//con.Close();
}
else
{
MessageBox.Show("用户名或密码错误!请重新登陆!", "提示信息");
}
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
if (!bl)
{
Application.Exit();
}
}从报错来看是没有获取到方法中的数据库连接串,但我不知道为什么没有获取到,麻烦大虾帮忙指点!!
using System.Collections.Generic;
using System.ComponentModel;
using System.Data.OracleClient;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Web;
using System.Xml;namespace test
{
class DBcon
{
public OracleConnection DataOpen()
{
string USERID, PASSWORD, DATASOURCE;
XmlTextReader reader = new XmlTextReader(".\\dataconfig.xml");
DataSet myDs = new DataSet();
myDs.ReadXml(reader);
DataRow myDataRow = myDs.Tables[0].Rows[0];
USERID = myDataRow["userid"].ToString();
PASSWORD = myDataRow["password"].ToString();
DATASOURCE = myDataRow["DataSource"].ToString();
string sqlString = "Data Source=" + DATASOURCE + ";user id=" + USERID + ";password =" + PASSWORD + "";
OracleConnection con = new OracleConnection(sqlString);
//myDs.Dispose();
//con.Open();
return con ;
}
}
}
通过另外一个窗体去调用上面类的值:
private void button1_Click(object sender, EventArgs e)
{
if (names.Text.Trim() == "")
{
MessageBox.Show("用户名不能为空!", "提示信息");
names.Focus();
return;
}
if (pwd.Text.Trim() == "")
{
MessageBox.Show("密码不能为空!", "提示信息");
pwd.Focus();
return;
}
int i = 0;
DBcon conn = new DBcon();//通过方法调用
conn.DataOpen();
OracleConnection connection = new OracleConnection();
connection.Open();//提示ConnectionString 属性尚未初始化
{
string sql = "select count(*) from PACSUSER where test01='" + names.Text.Trim() + "' and test02='" + password1 + "'";
using (OracleCommand cmd = connection.CreateCommand())
{
cmd.CommandText = sql;
i = (int)Convert.ToInt32(cmd.ExecuteScalar());
}
}
if (i > 0)
{
bl = true;
this.Close();
MainForm MF = new MainForm();
MF.Show();
//con.Close();
}
else
{
MessageBox.Show("用户名或密码错误!请重新登陆!", "提示信息");
}
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
if (!bl)
{
Application.Exit();
}
}从报错来看是没有获取到方法中的数据库连接串,但我不知道为什么没有获取到,麻烦大虾帮忙指点!!
解决方案 »
- 一个关于xml报文格式向服务器提交的应该怎样写啊,请前辈举个例,小弟先感谢了!
- 怎样创建一个html链接写入到粘贴板
- [pipi], 一个有关安装SQL SERVER2000的问题,谢谢各位
- VS2008安装----.NET3.5FrameWork 安装错误
- VS05 c# 基于桌面怎么给dateTimePicker赋值?
- 这样的写法有什么优点呢?
- nvarchar轉換datetime
- 自动生成的代码,扩充的话直接修改好不好?
- C# 连接oracle 无法对数据库进行插入操作
- 为什么数据库不能立即刷新???
- 关于WCF的简单问题:
- 如何写自定义控件的双击事件和Mouseon Mouseleve
// conn.DataOpen();
// OracleConnection connection = new OracleConnection();
OracleConnection connection = new DBcon().DataOpen();
OracleConnection connection = conn.DataOpen();
connection.Open();//提示ConnectionString 属性尚未初始化
DBcon conn = new DBcon();//通过方法调用
OracleConnection connection = conn.DataOpen();
connection.Open();
按照你们说的修改后
OracleConnection connection = new DBcon().DataOpen();
connection.Open();//提示ORA-12154: TNS: 无法解析指定的连接标识符
conn.DataOpen();
OracleConnection connection = conn.DataOpen();
不需要在打开了..
你在conn.DataOpen(); 方法中已经打开过了.而且该方法返回一个已经打开的连接,
你OracleConnection connection = new OracleConnection();
的时候实例了另外一个空连接
DBcon conn = new DBcon();//通过方法调用
// conn.DataOpen();
OracleConnection connection = conn.DataOpen();
// connection.Open();//提示ConnectionString 属性尚未初始化这样就OK了
按照你说的修改后在下面报错了
using (OracleCommand cmd = connection.CreateCommand())
{
cmd.CommandText = sql;
i = (int)Convert.ToInt32(cmd.ExecuteScalar()); //无效操作。连接被关闭。
}
}
无效操作。连接被关闭。
{
cmd.Connection = connection ;
cmd.CommandText = sql;
i = (int)Convert.ToInt32(cmd.ExecuteScalar());
}
按照你的修改后还是提示
i = (int)Convert.ToInt32(cmd.ExecuteScalar()); //无效操作。连接被关闭。
你指的是哪块的connectionstring?