数据库类的扩展:数据库的建立和表的建立

水如烟 2008-04-25 11:39:25
加精
数据库类

在数据类中,实现了SqlServer,Excel,Access,FoxDBase四类常见数据库的基本操作.

在这个贴子里,尝试实现四类数据库的建立和表的建立.

建库:
对SqlServer,可以使用CREATE DATABASE databaseName来创建新库;
对Excel,是生成.xls文件,对Access,是生成.mdb文件;
对FoxDBase,是建立一个文件夹.

建表:
对SqlServer、Access可以使用CREATE TABLE tableName({fieldName dataType{n,m}},...)来创建新表;
对Excel,我现在找不到使用SQL语句的方法,只能通过ExcelApplication.Worksheets.Add来间接实现;(这句错,可以做到)
对FoxDBase,可以使用SQL语句,但对Numeric类型,并不能实现指定的数字、小数位数,因此,打算通过调用Fox.exe解释.prg文件语句来实现。
这样的话,Dll文件大小肯定见涨了。Fox.exe+Fox.ovl,两者合计约1,789KB.

各位有什么好方法的话,望指照(指点并关照)。

...全文
2907 94 打赏 收藏 转发到动态 举报
写回复
用AI写文章
94 条回复
切换为时间正序
请发表友善的回复…
发表回复
cooldandan 2012-08-28
  • 打赏
  • 举报
回复
好东西,学习学习~!
ljg0418 2012-08-28
  • 打赏
  • 举报
回复
新手来学习,谢谢楼主!
Joy0903 2012-05-23
  • 打赏
  • 举报
回复
1、使用bindingsource数据源控件设计的班级编码表维护程序的界面如下:








程序中,bindingsource1的数据源为班级编码表,bindingsource2的数据源为系部编码表,bindingsource3的数据源为专业编码表,bindingsource4的数据源为班级状态表。显示系部名称的控件为cbo_dept;显示专业名称的控件为cbo_major;显示班级状态名称的控件为lst_status。请完成下表中三个控件的相关属性的填空:
控件名称 datasource displaymember valuemember selectedvalue
cbo_dept
cbo_major
lst_status




2、下图是使用DataSet对象和DataAdapter对象设计的学生档案维护程序的运行时界面如,程序运行以后,系部名称作为列表项自动添加到组合框中,在组合框中选择某个系部名称后,所属班级名称显示在DataGridView1控件中;在DataGridView1控件中选择某个班级名称以后,该班级学生档案信息显示在DataGridView2控件中;在DataGridView2控件中对某个学生档案信息进行维护时,当选择“stu_sex” 或“stu_party”列时,tblsex或tblparty数据表中的数据显示在DataGridView3控件中,以提供给用户进行维护时参考。请完善程序代码:










private void Form1_Load(object sender, EventArgs e)
{
//在组合框中填充系部名称。
con.Open();
string str = "select dept_name,dept_id from tbldept";
OleDbDataAdapter dp = new OleDbDataAdapter(str, con);
con. ;
DataSet ds = new DataSet();
dp.Fill( , "tbldept");
comboBox1.DataSource = ds.Tables["tbldept"];
comboBox1.DisplayMember = " ";
comboBox1. = "dept_id";
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{ //根据选择的系部名称显示所属的班级名称。
con.Open();
string str = "select class_name,class_id from tblclass where class_dept='";
str += ;
str += "'";
OleDbDataAdapter dp = new OleDbDataAdapter(str, con);
con.Close();
DataSet ds = new DataSet();
dp.Fill(ds, "tblclass");
dataGridView1. = ds.Tables[0];
dataGridView1.Columns[1].Visible = false;
}
private void dataGridView1_Click(object sender, EventArgs e)
{ //根据所选班级显示班级学生档案信息
con.Open();
string str1 = "";
string str2 = "";
//判断是否选择了行
int i = dataGridView1.Rows.GetRowCount(DataGridViewElementStates.Selected);
//判断是否选择了单元格。(选择单元格肯定会选择行)
int j = dataGridView1.GetCellCount(DataGridViewElementStates.Selected);
if (i > 0 || j>0)
{
if (i > 0)
{
str1 = dataGridView1.SelectedRows[0]. ;

}
if (j > 0)
{
str1 = dataGridView1.Rows[dataGridView1.SelectedCells[0].RowIndex].Cells[1].Value.ToString();

}
str2 = "select * from tblstudent where stu_class='";
str2 += ;
str2 += "'";
dpsave = new OleDbDataAdapter(str2, con);
con.Close();
dssave = new DataSet();
dpsave.Fill(dssave, "tblstudent");
tblsave = dssave.Tables[0];
dataGridView2.DataSource = dssave.Tables[0];
dssave.AcceptChanges();
}
}
private void dataGridView2_CellClick(object sender, DataGridViewCellEventArgs e)
{ //根据所选表格中的列,如果是性别或政治面貌,就在dataGridView3中显示编码和名称的对应关系。
int i = dataGridView2.CurrentCell. ;
string str1 = dataGridView2.Columns[i].HeaderText.ToString();
string str2="";
if (str1 == ("Stu_Sex"))
{
str2 = " ";
}
if (str1.Equals("Stu_Party"))
{
str2 = "select * from tblparty";
}
if (str2 != "")
{
con.Open();
OleDbDataAdapter dp = new OleDbDataAdapter(str2, con);
con.Close();
DataSet ds = new DataSet();
dp.Fill(ds, "tbl1");
dataGridView3.DataSource = ds.Tables[0];
}
}





ArtlessBruin 2012-02-07
  • 打赏
  • 举报
回复
好贴,收藏……
jack0216359551 2010-12-06
  • 打赏
  • 举报
回复
看贴就要回贴
jhkmnm_123 2010-09-06
  • 打赏
  • 举报
回复
看贴就要回贴
Aro0223 2010-05-31
  • 打赏
  • 举报
回复
水兄能不能指點下,客戶端用服務器端的鏈接問題,數據庫就SQL就行,連接字符串及客戶端與服務器端個需要什麽設置
yang0158 2010-05-30
  • 打赏
  • 举报
回复
看起来很厉害啊,先收起来,慢慢研究
CSProgramer 2010-05-26
  • 打赏
  • 举报
回复
收藏了!
isyba 2010-05-24
  • 打赏
  • 举报
回复
有空再慢慢品读!好贴要顶一个
Candbasic 2009-05-05
  • 打赏
  • 举报
回复
好东西
hexuan07 2009-02-06
  • 打赏
  • 举报
回复
cdsfsfds
alexshucai 2008-09-22
  • 打赏
  • 举报
回复
2003以前版本的数据库文件使用ConvertAccessProject方法似乎可以转换为2007的ACCDB文件,
但是,如果以前版本的mdb文件加了PassWord,似乎就不能转了。非要把密码去掉才行。不知道如何进行自动转换啊
这样难道不行?
oAccess.AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityForceDisable
oAccess.OpenCurrentDatabase("D:\db002.mdb", False, "123")
oAccess.ConvertAccessProject(SourceFilename:="D:\db002.mdb", _
DestinationFilename:="D:\db0012007.accdb", _
DestinationFileFormat:=Access.AcFileFormat.acFileFormatAccess2007)
yami251139 2008-09-16
  • 打赏
  • 举报
回复
这么好的帖子,就算结了我也应该顶下
水滴 2008-09-04
  • 打赏
  • 举报
回复
好东西,学习学习~!
yu3702 2008-08-29
  • 打赏
  • 举报
回复
好东西,学习了~!!!!
hzs2006 2008-07-27
  • 打赏
  • 举报
回复
有没有C#版本的!
rainbowsoftware 2008-07-01
  • 打赏
  • 举报
回复
mark
billow_chentao 2008-05-30
  • 打赏
  • 举报
回复
作个记号!
weini868311928 2008-05-08
  • 打赏
  • 举报
回复
顶一下
加载更多回复(72)

16,717

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧