c# 多个应用程序用一个类库对象数据?
类库(Class Library)是一个综合性的面向对象的可重用类型集合,这些类型包括:接口、抽象类和具体类。
类库可以解决一系列常见编程任务(包括诸如字符串管理、数据收集、数据库连接以及文件访问等任务),还可以解决多种专用开发任务(控制台应用程序、桌面应用程序、WEB应用程序等)。
类库字面意思就是类的集合,类库不等于框架(Framework),Framework 是比类库更高一级的概念。
以access为例,建立一个access类库,这个类库里面包含有多个类,如果想要执行数据库的删,改,增加,只调用类库中一个类的ExecuteNonQuery方法就好了,在其他位置调用ExecuteNonQuery方法的时候,只需要输入把数据库连接字符串,命令类型,sql语句和参数就可行。
先写一个连接SQL的类
public class DBClass
{
public DBClass()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public SqlConnection getcon()
{
string strCon = "Data Source=(local);DataBase=stu;User ID=sa;PWD=123";
SqlConnection sqlCon = new SqlConnection(strCon);
return sqlCon;
}
}
调用就使用
DBClass DB = new DBClass();
protected void b_user_Click(object sender, EventArgs e)
{
SqlConnection conn = DB.getcon();
看了你对Minos1990的回答,想实现类似的机能,你可能会使用到C#的远程调用(类似JAVA的RMI技术)
另外,对你的问题补充,我有不同的看法。
“我觉得应该可以实现的,因为两程序都是在托管下运行的,也就是说程序中的变量对于公共语言运行库而言应该是可见,我只是不知道怎么实现”
虽然C#代码都是托管运行,但是,有个问题,你的程序是在不同的进程中运行的,也就是说在不同的CLR下运行,它们之间不能直接通信。
所以,你现在面临的问题是如何实现进程间的通信,现在有一个简单的解决方案,那就是使用C#运程调用技术(同时应该也会涉及到对象的序列化)。
跨进程数据共享原则上来说是不太可能的,但可以通过以下几种方式实现数据共享:
通过共享内存
进程间通讯(管道、TCP、WinMessage)
存储共享(将数据存储成文件)
通过数据库共享(关系型数据库、nosql、redis、memcache等等)
推荐使用4来实现数据共享
序列化成字符串存进文本,给出接口进行文本的读取和写入
就相当于多个应用程序读取同一份配置文件.需要注意的是要做写入保护,也就是多个程序不能同时修改该文件,类似锁机制就行了
string str3 = "server=.;database=数据库名;integrated security=true";
//数据库连接字符串
SqlConnection conn3 = new SqlConnection(str3);
//新建数据库连接对象
conn3.Open();
//实现连接,打开数据库
SqlCommand cmd = new SqlCommand("insert into 表 (列名,列名,列名) values('数据','数据','数据')", conn3);
//插入数据
cmd.ExecuteNonQuery();
//执行SQL语句
conn3.Close();
//关闭数据库
声明为public static就可以
但要考虑多个组建访问的冲突问题
邗查新奕: 这个有很多办法实现,我建议你用一个配置文件来实现该功能(配置文件建议用xml).你界面的颜色是靠读取xml的相应节点得到的,这样你在F2里修改配置文件,然后让F1刷新,不就可以了吗??其实有很简单的办法可以实现的,比如说在F2中调用F1的属性(get() & set())来改变F1的颜色.但是不如配置文件的办法扩展性强 作程序不要就想着实现,不想扩充 上网去随便查查“子窗体调用父窗体的方法”,有的是例子,我不写了.建议还是xml吧,写个通用类来实现读写就行了,这样的话,以后还可以用到这个程序,而不是做完就完了
西充县15314275783: C# A,B两个程序共用类库C,如何将B程序创建的C中类C1的实例C11传递给A - ?
邗查新奕: 看了你对Minos1990的回答,想实现类似的机能,你可能会使用到C#的远程调用(类似JAVA的RMI技术) 另外,对你的问题补充,我有不同的看法.“我觉得应该可以实现的,因为两程序都是在托管下运行的,也就是说程序中的变量对于公共语言运行库而言应该是可见,我只是不知道怎么实现” 虽然C#代码都是托管运行,但是,有个问题,你的程序是在不同的进程中运行的,也就是说在不同的CLR下运行,它们之间不能直接通信.所以,你现在面临的问题是如何实现进程间的通信,现在有一个简单的解决方案,那就是使用C#运程调用技术(同时应该也会涉及到对象的序列化).
西充县15314275783: C#控制台应用程序中一个项目能运行两个类吗?
邗查新奕: 类是类,根据类创建实例对象,几个对象都没问题 如果是特殊类,不需要创建对象,那么也是可以运行多个的 举例:CLASS A 是普通类,你创建类A的实例对象OBJ1,OBJ2,OBJ3...都可以在一个项目里,如果你有特殊类CLASS B,类B假如是个静态类,那么你直接调用静态方法,不创建实例对象,你也可以反复用 简单说,一个项目只是一个总体需要达到的目标,类是实现目标需要的工具,要多少工具,哪些工具重复使用,都是可以的,只要目标达到就可以了
西充县15314275783: c#编写一个objectcounter,用来统计程序中目前存在多少个该类的对象 - ?
邗查新奕: public class MyClass { // 使用静态字段来计数 private static int objectCounter = 0; public MyClass() { // 每次实例化MyClass,计数值加1 objectCounter++; //... } // 获取对象实例计数 public static int ObjectCounter { get { retuen objectCounter; }} ...
西充县15314275783: 我在VS中用C#自己做了一个类库,但是怎么引用不了?在同一个程序当中 - ?
邗查新奕: public 的类要先实例化才能用的 比如Class a1=new Class();类是实例化之后用来 调用 其成员(方法/变量)的 命名空间(namespace)是用来 引用 的
西充县15314275783: 在一个C#程序实现对多个数据库的访问和操作 - ?
邗查新奕: 楼主是用asp.net做网站开发吧 如果是这样 我的解答如下: 比如你有3个数据库 你就要建立相对应的3个链接(也就是3个链接类)三个类里的代码基本一样 只不过是Connection的对象名不一样如果你要操作数据库里的表 具体思路 有两种 : ①视图实现 ②三层实现 编写临时实体类 需要那个字段就封装哪个字段 不知道能否帮的上楼主 .... 完全是我自己的思路
西充县15314275783: C#控制台程序中怎样引用另一个项目中的类或结构 - ?
邗查新奕: 在解决方案里面有一个引用—右键引用然后选择类所在的文件夹中的dll文件点击确定!然后直接在引用代码中添加 using 加上你的类库的名字,也就是你命名类库的名字!然后...
西充县15314275783: C#中同一个解决方案有多个项目时,如何相互运用? - ?
邗查新奕: 同一个解决方案吗 多个项目是什么意思?是多个窗体的意思? 你可以这样写 Form2 f2=new Form2();private void button1_Click(object sender, EventArgs e){if (f2.Visible)f2.Visible = false;elsef2.Visible = true;} 实例化另外一个窗体 点击这个按钮,就出现,再点一次,就消失 如果你是要生成下面的朋友说的dll的话,就新建项目,类库
西充县15314275783: c#,一个应用程序的所有程序代码都封装到类中 - ?
邗查新奕: public void setValue(TextBox textbox,string strText){ textbox.value=strText} 把这个方法放到一个类中,比如说叫A 然后实例化这个类,然后在button事件中 调用这个方法,就可以了
西充县15314275783: C#项目中怎样创建和使用类和类库 - ?
邗查新奕: 创建一个类库项目在“文件”菜单上,选择“新建项目”.在“新建项目”对话框的“模板”窗格中,单击“类库”.在“名称”框中键入 Persons,再单击“确定”.把“添加新解决方案”勾...