简单问题!帮帮忙!急啊,解决马上给分!

yybb520 2005-06-18 12:45:27
我想实现在是动态创建一个数据库(字段不确定),然后向数据库中录入记录(在DataGrid中录入),有哪位好心人可以帮帮忙我怎么样将DATAGRID中的数据加到所建的数据库中呢?因为是access数据库,所以不使用存储过程,高手快帮帮我啊!马上给分啊!
...全文
102 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
renyu732 2005-07-02
  • 打赏
  • 举报
回复
完全解决方案请见:
http://blog.csdn.net/hchxxzx/archive/2005/05/19/376362.aspx
renyu732 2005-07-02
  • 打赏
  • 举报
回复
动态创建数据库的代码:
/// 由于创建数据库必须用到ADOX,所以你必须添加引用它
/// 对于不同版本的ADO,需要添加不同的引用
/// 请添加引用Microsoft ADO Ext. 2.7 for DDL and Security
/// 请添加引用Microsoft ADO Ext. 2.8 for DDL and Security
/// 之后,并且在页面中using ADOX;

#region 创建ACCESS数据库

/// <summary>
/// 生成一个ACCESS数据库
/// 字段1:ID 自动编号
/// 字段2:filename 原文件名
/// 字段3:filenewname 新文件名(以年月日时分秒加毫秒命名)
/// 字段3:fileSize 文件大小
/// 字段4:fileMime 文件mime类型
/// 字段5:fileblob 存储文件,OLE类型(相应SQLSERVER为IMAGE类型,ORACLE中为BLOB类型
/// 字段6:uploadtime 上传时间
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Button1_Click(object sender, System.EventArgs e)
{
//检查此数据库,如果已经创建,则删除它
if(File.Exists(dbName) == true)
{
try
{
File.Delete(dbName);
}
catch
{
this.Response.Write("<script>alert('发生意外,无法删除此文件,该文件可能被打开');history.back();</script>");
this.Response.End();
}
}


//创建数据库
ADOX.CatalogClass cat = new ADOX.CatalogClass();
ADOX.TableClass mytab;
try
{
//创建数据库
cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbName +";");

//创建表
mytab = new ADOX.TableClass();
mytab.ParentCatalog = cat;
mytab.Name = this.dbTable;

//增加一个自动增长的字段
this.add_Columns(cat,mytab,"id","上传文件信息表ID",ADOX.DataTypeEnum.adInteger,0,true);

//添加原文件名字段,文本,50长度
//注意,字段类型文本不能使用adVarChar,否则出错
this.add_Columns(cat,mytab,"filename","原文件名",ADOX.DataTypeEnum.adVarWChar,50);

//添加 新文件名字段,文本,50长度
this.add_Columns(cat,mytab,"filenewname","新文件名",ADOX.DataTypeEnum.adVarWChar,50);

//添加 文件大小字段,数字,0长度
this.add_Columns(cat,mytab,"fileSize","文件大小",ADOX.DataTypeEnum.adInteger,0);

//添加 文件mime类型 字段,文本,50长度
this.add_Columns(cat,mytab,"fileMime","文件mime类型",ADOX.DataTypeEnum.adVarWChar,50);

//添加 OLE类型 字段,OLE,0长度
this.add_Columns(cat,mytab,"fileblob","OLE类型",ADOX.DataTypeEnum.adLongVarBinary,0);

//添加 上传时间 字段,date,0长度
this.add_Columns(cat,mytab,"uploadtime","上传时间",ADOX.DataTypeEnum.adDate,8);

//设置主键
mytab.Keys.Append("PrimaryKey",ADOX.KeyTypeEnum.adKeyPrimary,"id","","");

//添加创建好的表
cat.Tables.Append(mytab);
}
catch(Exception ex)
{
throw ex;
}
finally
{
mytab = null;
cat = null;

//页面转向
this.Response.Write("<script>alert('成功创建数据库及表!');window.location.href='list.aspx';</script>");
this.Response.End();
}
}


/// <summary>
/// 重载,添加ACCESS数据库表字段
/// </summary>
/// <param name="cat">ADOX对象</param>
/// <param name="myTab">要创建字段的表名</param>
/// <param name="columnName">字段名</param>
/// <param name="Description">字段注释</param>
/// <param name="dataType">字段格式</param>
/// <param name="columSize">字段长度</param>
private ADOX.ColumnClass add_Columns(ADOX.CatalogClass cat,ADOX.TableClass myTab,string columnName,string Description,ADOX.DataTypeEnum dataType,int columSize)
{
return(this.add_Columns(cat,myTab,columnName,Description,dataType,columSize,false));
}

/// <summary>
/// 重载,添加ACCESS数据库表字段
/// </summary>
/// <param name="cat">ADOX对象</param>
/// <param name="myTab">要创建字段的表名</param>
/// <param name="columnName">字段名</param>
/// <param name="Description">字段注释</param>
/// <param name="dataType">字段格式</param>
private ADOX.ColumnClass add_Columns(ADOX.CatalogClass cat,ADOX.TableClass myTab,string columnName,string Description,ADOX.DataTypeEnum dataType)
{
return(this.add_Columns(cat,myTab,columnName,Description,dataType,0,false));
}

/// <summary>
/// 添加ACCESS数据库表字段
/// </summary>
/// <param name="cat">ADOX对象</param>
/// <param name="myTab">要创建字段的表名</param>
/// <param name="columnName">字段名</param>
/// <param name="Description">字段注释</param>
/// <param name="dataType">字段格式</param>
/// <param name="columSize">字段长度</param>
/// <param name="isAutoIncrement">是否自动编号</param>
private ADOX.ColumnClass add_Columns(ADOX.CatalogClass cat,ADOX.TableClass myTab,string columnName,string Description,ADOX.DataTypeEnum dataType,int columSize,bool isAutoIncrement)
{
ADOX.ColumnClass myColumn = new ADOX.ColumnClass();
myColumn.ParentCatalog = cat;

//设置字段类型
myColumn.Type = dataType;

//字段名
myColumn.Name = columnName;

//添加注释
myColumn.Properties["Description"].Value = Description;

//添加自动编号
myColumn.Properties["AutoIncrement"].Value = isAutoIncrement;

//添加此字段
myTab.Columns.Append(myColumn,ADOX.DataTypeEnum.adInteger,columSize);

return(myColumn);
}

#endregion 结束创建ACCESS数据库
renyu732 2005-07-02
  • 打赏
  • 举报
回复
这个应该很简单的吧?
通过e.item.cells(0).controls(0)这样的方式获得DataGrid数据,然后将其插入到Access中不就可以了吗?

viscoo 2005-07-02
  • 打赏
  • 举报
回复
具体有几个字段用dg的列来判断就ok
viscoo 2005-07-02
  • 打赏
  • 举报
回复
看来我说的不清楚,如果datagrid是通过数据自动生成的列的话,那么dg列和数据列的顺序是一致的,你只要把对应的dg列给对应的字段就可以了所以说是
select* from XXX
ors=ots.rows.newrow
ors(0)=dg.cell(0).……
……
oadp.update(ots)
就一定是行的
yungboy 2005-06-18
  • 打赏
  • 举报
回复
http://www.1sky1.com/edu/n7400c21.shtml
DataGrid技巧大集合
ccghghgj 2005-06-18
  • 打赏
  • 举报
回复
帮忙顶

==============c
csdn小助手
http://qqwwee.com/csdn.rar
9sun888 2005-06-18
  • 打赏
  • 举报
回复
1、使用CREATE TABLE sql语句创建表
2、将DATAGRID与新创建的表绑定

CREATE TABLE 语句
新建一个表。


注释 Microsoft Jet 数据库引擎不支持对非 Microsoft Jet 数据库引擎数据库使用 CREATE PROCEDURE 或者任何 DDL 语句。可以使用 DAO Create 方法代替。


语法
CREATE [TEMPORARY] TABLE table (field1 type [(size)] [NOT NULL] [WITH COMPRESSION | WITH COMP] [index1] [, field2 type [(size)] [NOT NULL] [index2] [, ...]] [, CONSTRAINT multifieldindex [, ...]])

CREATE TABLE 语句包含以下部分:

部分 说明
table 要创建的表的名称。
field1,field2 要在新表中创建的字段的名称。必须创建至少一个字段。
type 在新表中 field 的数据类型。
size 以字符为单位的字段大小(仅限于文本和二进制字段)。
index1, index2 CONSTRAINT 子句,用于定义单字段索引。
multifieldindex CONSTRAINT 子句,用于定义多字段索引。

pingdan_yang 2005-06-18
  • 打赏
  • 举报
回复
没用过access,不知道。
viscoo 2005-06-18
  • 打赏
  • 举报
回复
用Select* From XXX Where XXXXX
ors(0)=YYY
ors(1)=YYYYY
....
这样应该可以吧!

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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