logo

将 DataSet 插入 Access 的2种方法

作者:孟宪会 阅读:1013 发表于:2011-09-29 15:47:47

方法1:直接使用InsertCommand实现

ASPX 代码
<%@ Page Language="C#" AutoEventWireup="true" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

  protected
void Page_Load(object sender, EventArgs e)
  {
    DataSet ds
= new DataSet();
    DataTable dt
= new DataTable();
    DataRow dr;
    
    
//以下3行可以不要,因为我们并没有插入自动增加的列的数据。
    dt.Columns.Add(new DataColumn("UserId", typeof(System.Int32)));
    dt.Columns[
0].AutoIncrement = true;
    dt.PrimaryKey
= new DataColumn[] { dt.Columns["UserId"] };

    
//为了说明问题,我们这里设置的字段名称与MDB文件中的可以不一样
    dt.Columns.Add(new DataColumn("MyUserName", typeof(System.String)));
    dt.Columns.Add(
new DataColumn("MyPassword", typeof(System.String)));
    dt.Columns.Add(
new DataColumn("MyTitle", typeof(System.String)));

    
//生成示例数据
    for (int i = 0; i < 8; i++)
    {
      dr
= dt.NewRow();
      dr[
"MyUserName"] = "【孟子E章】" + i.ToString();
      dr[
"MyPassword"] = "http://dotnet.aspx.cc/Default.aspx?id=" + i.ToString();
      dr[
"MyTitle"] = "net_lover" + i.ToString();
      dt.Rows.Add(dr);
    }

    ds.Tables.Add(dt);

    
//数据库连接字符串
    String connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|aspxWeb2.mdb;";
    using (OleDbConnection connection
= new OleDbConnection(connectionString))
    {
      OleDbDataAdapter adapter
= new OleDbDataAdapter();
      
//定义插入数据的方法,注意字段名称与DataSet里面的差异
      adapter.InsertCommand = new OleDbCommand("Insert Into TestTable([UserName],[Password],[Title]) values(@UserName,@Password,@Title)", connection);
      OleDbParameter UserName
= new OleDbParameter("@UserName", OleDbType.LongVarWChar, 1073741823, "MyUserName"); //这里的字段名称与DataSet里面的对应。
      adapter.InsertCommand.Parameters.Add(UserName);
      OleDbParameter Password
= new OleDbParameter("@Password", OleDbType.LongVarWChar, 1073741823, "MyPassword");
      adapter.InsertCommand.Parameters.Add(Password);
      OleDbParameter Title
= new OleDbParameter("@Title", OleDbType.LongVarWChar, 255, "MyTitle");
      adapter.InsertCommand.Parameters.Add(Title);
      
      adapter.TableMappings.Add(
"Table",ds.Tables[0].TableName);
      OleDbCommandBuilder builder
= new OleDbCommandBuilder(adapter);
      builder.QuotePrefix
= "[";
      builder.QuoteSuffix
= "]";
      adapter.Update(ds);
    }
  }

</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  
<title></title>
</head>
<body>
  
<form id="form1" runat="server">  
  
</form>
</body>
</html>

ASPX 代码(以下代码需要确认。)
<%@ Page Language="C#" %>

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<%@ Import Namespace="System.Data.Common" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

  protected
void Page_Load(object sender, EventArgs e)
  {
    
//新建DataSet 和 DataTable    
    System.Data.DataSet ds = new System.Data.DataSet();
    System.Data.DataTable dataTable1
= new System.Data.DataTable("TestTable");
    System.Data.DataRow dr;
    dataTable1.Columns.Add(
new System.Data.DataColumn("Id", typeof(System.Int32)));
    dataTable1.Columns.Add(
new System.Data.DataColumn("Title", typeof(System.String)));
    dataTable1.Columns.Add(
new System.Data.DataColumn("Description", typeof(System.String)));
    dataTable1.Columns[
0].AutoIncrement = true;
    dataTable1.PrimaryKey
= new System.Data.DataColumn[] { dataTable1.Columns["Id"] };

    
//生成示例数据
    for (int i = 0; i < 8; i++)
    {
      dr
= dataTable1.NewRow();
      dr[
"Title"] = "【孟子E章】" + i.ToString();
      dr[
"Description"] = "【孟子E章】" + i.ToString();
      dataTable1.Rows.Add(dr);
    }
    ds.Tables.Add(dataTable1);
    
    
//数据库连接字符串
    String connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|aspxWeb2.mdb";
    using (OleDbConnection connection
= new OleDbConnection(connectionString))
    {
      OleDbDataAdapter adapter
= new OleDbDataAdapter();
      
//定义插入数据的方法,
      adapter.InsertCommand = new OleDbCommand("Insert Into TestTable([Title],[Description]) Values(@Title,@Description)", connection);      
      adapter.InsertCommand.Parameters.Add(
new OleDbParameter("@Title",dataTable1.Columns["Title"]));
      adapter.InsertCommand.Parameters.Add(
new OleDbParameter("@Description", dataTable1.Columns["Description"]));      
      OleDbCommandBuilder builder
= new OleDbCommandBuilder(adapter);    
      adapter.Update(ds);
    }
  }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
  
<title></title>
</head>
<body>
  
<form id="form1" runat="server">
  
</form>
</body>
</html>

方法2:

ASPX 代码
<%@ Page Language="C#" %>

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<%@ Import Namespace="System.Data.Common" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

  protected
void Page_Load(object sender, EventArgs e)
  {
    System.Data.DataSet ds
= new System.Data.DataSet();
    System.Data.DataTable dataTable1;
    System.Data.DataRow dr;

    String connectionString
= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|aspxWeb2.mdb";
    using (OleDbConnection connection
= new OleDbConnection(connectionString))
    {
      OleDbDataAdapter adapter
= new OleDbDataAdapter("select id, [Title],[Description] from TestTable", connection);
      adapter.Fill(ds,
"TestTable");
      dataTable1
= ds.Tables["TestTable"];
      DataTableMapping dtmTable
= new DataTableMapping("Table", "TestTable");
      adapter.TableMappings.Add(dtmTable);
      OleDbCommandBuilder builder
= new OleDbCommandBuilder(adapter);
      
      
for (int i = 0; i < 8; i++)
      {
        dr
= dataTable1.NewRow();
        dr[
"Title"] = "【孟子E章】" + i.ToString();
        dr[
"Description"] = "【孟子E章】" + i.ToString();
        dataTable1.Rows.Add(dr);
      }
      adapter.Update(ds);
    }
  }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  
<title></title>
</head>
<body>
  
<form id="form1" runat="server">
  
</form>
</body>
</html>