当应用程序启动时,使用Dll访问数据库是否明智。
这是我必须在我的应用中的每个页面调用的代码
SqlConnection myConnection = new SqlConnection();
myConnection.ConnectionString = "Data Source=CRYSTAL5\\INSTANCE1;Initial Catalog=Pharmacy;Integrated Security=True";
myConnection.Open();
和我写的dll代码
public class DBConnect
{
public DBConnect()
{
Initialize();
}
private SqlConnection connection;
//Constructor
//Initialize values
private void Initialize()
{
string connectionString;
connectionString = "Data Source=CRYSTAL5\\INSTANCE1;Initial Catalog=Pharmacy;Integrated Security=True";
connection = new SqlConnection(connectionString);
}
然后我在我的应用中添加了using DBCon;
,并尝试运行此代码
DBConnect myConnection = new DBConnect();
SqlCommand myCommand = new SqlCommand("select doc_fname,doc_lname,gender,department,education ,NMC_no from ph.doctor_info where unit_id =0", myConnection);
它不起作用。
抱歉这个糟糕的描述
'System.Data.SqlClient.SqlCommand.SqlCommand(string,System.Data.SqlClient.SqlConnection)'的最佳重载方法匹配有一些无效的参数
是我得到的错误
如果没有堆栈溢出,我该怎么做。
答案 0 :(得分:2)
DBConnect似乎没有公开SqlConnection对象。因此,您将DBConnect对象传递给SqlCommand构造函数而不是SqlConnection对象,因此会出错。
答案 1 :(得分:1)
您正在将类型为“DbConnect”的对象传递给SqlCommand而不是SqlConnection对象。您的SQL连接对象保存在此类的connection
变量中。
您需要将此字段设为公共字段,或者创建一个返回数据连接的函数。
如果公开连接,您将执行以下操作:
SqlCommand myCommand = new SqlCommand("select doc_fname,doc_lname,gender,department,education ,NMC_no from ph.doctor_info where unit_id =0", myConnection.connection);
编辑:同样在Initialise中,您已创建了SqlConnection对象,但未调用Open()
。在尝试使用连接之前,您需要执行此操作。在调用SqlCommand之前,将connection.Open()
添加到initialise()或调用myConnection.connection.Open()
。