VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 795|回复: 8

这段操作数据库的代码错了 帮忙看看~

[复制链接]

1

主题

5

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-3-6 20:30:02 | 显示全部楼层 |阅读模式
错误提示信息是:
对于不返回任何键列信息的 SelectCommand,不支持 UpdateCommand 的动态 SQL 生成。

public partial class _Default : System.Web.UI.Page
{
    private   OleDbDataAdapter DA = new OleDbDataAdapter();
    protected void Page_Load(object sender, EventArgs e)
    {
        WriteData();
    }

    private   DataTable GetData()
    {
        DataTable Dt = new DataTable();
        OleDbConnection Con = new OleDbConnection(@"constr");
        DA.SelectCommand = new OleDbCommand("select [name],[new],[buy]", Con);//没有选主键因为这个表没有主键,我也不能加上主键
        DA.Fill(Dt);
        Dt.PrimaryKey = new DataColumn[] { Dt.Columns["id"] };//建立一个主键
        return Dt;
    }

    private   void WriteData(DataTable Dt)
    {
        OleDbConnection Con = new OleDbConnection(@"constr");
        DA.InsertCommand = new OleDbCommand("insert sql", Con);
        OleDbCommandBuilder Scb = new OleDbCommandBuilder(DA);
        DA.Update(GetData());
    }
}
回复

使用道具 举报

0

主题

1

帖子

0.00

积分

新手上路

Rank: 1

积分
0.00
发表于 2020-3-6 20:33:58 | 显示全部楼层
牛牛。。。。。。
回复

使用道具 举报

0

主题

8

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-5-25 06:45:01 | 显示全部楼层
你是插入一条数据,可是你不需要一定要主键阿,直接插入不久好了?
回复

使用道具 举报

0

主题

119

帖子

67.00

积分

新手上路

Rank: 1

积分
67.00
发表于 2020-5-26 20:30:01 | 显示全部楼层
自己写相应的SQL语句:
大概如下:
其实你还是自己写语句的好,因为自动生成的有好多垃圾,举个例子,   
  //   sqlInsertCommand1   
  //     
  this.sqlInsertCommand1.CommandText   =   "INSERT   INTO   student(stuno,   name)   VALUES   (@stuno,   @name)";     
  this.sqlInsertCommand1.Connection   =   this.conn;   
  this.sqlInsertCommand1.Parameters.Add(new   System.Data.SqlClient.SqlParameter("@stuno",   System.Data.SqlDbType.VarChar,   4,   "stuno"));   
  this.sqlInsertCommand1.Parameters.Add(new   System.Data.SqlClient.SqlParameter("@name",   System.Data.SqlDbType.VarChar,   50,   "name"));   
  //     
  //   sqlUpdateCommand1   
  //     
  this.sqlUpdateCommand1.CommandText   =   "UPDATE   student   SET   stuno   =   @stuno,   name   =   @name   WHERE   (stuno   =   @Original_stuno)";   
  this.sqlUpdateCommand1.Connection   =   this.conn;   
  this.sqlUpdateCommand1.Parameters.Add(new   System.Data.SqlClient.SqlParameter("@stuno",   System.Data.SqlDbType.VarChar,   4,   "stuno"));   
  this.sqlUpdateCommand1.Parameters.Add(new   System.Data.SqlClient.SqlParameter("@name",   System.Data.SqlDbType.VarChar,   50,   "name"));   
  this.sqlUpdateCommand1.Parameters.Add(new   System.Data.SqlClient.SqlParameter("@Original_stuno",   System.Data.SqlDbType.VarChar,   4,   System.Data.ParameterDirection.Input,   false,   ((System.Byte)(0)),   ((System.Byte)(0)),   "stuno",   System.Data.DataRowVersion.Original,   null));   
      
  //   sqlDeleteCommand1   
  //     
  this.sqlDeleteCommand1.CommandText   =   "DELETE   FROM   student   WHERE   (stuno   =   @Original_stuno)";   
  this.sqlDeleteCommand1.Connection   =   this.conn;   
  this.sqlDeleteCommand1.Parameters.Add(new   System.Data.SqlClient.SqlParameter("@Original_stuno",   System.Data.SqlDbType.VarChar,   4,   System.Data.ParameterDirection.Input,   false,   ((System.Byte)(0)),   ((System.Byte)(0)),   "stuno",   System.Data.DataRowVersion.Original,   null));   
   
  this.sqlDa.DeleteCommand   =   this.sqlDeleteCommand1;   
  this.sqlDa.InsertCommand   =   this.sqlInsertCommand1;   
  this.sqlDa.UpdateCommand   =   this.sqlUpdateCommand1;   
  try   
  {   
  sqlDa.Update(dt.GetChanges,"student");     
  return   true;   
  }   
  catch(System.Data.SqlClient.SqlException   ex)   
  {   
   
  return   false;   
  }     
  finally   
  {   
  conn.Close();   
  }
回复

使用道具 举报

1

主题

5

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-5-28 20:45:01 | 显示全部楼层
我不想加update命令。。。。
回复

使用道具 举报

1

主题

5

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-5-28 22:45:02 | 显示全部楼层
private DataTable GetData()
    {
        DataTable Dt = new DataTable();
        DataColumn pk = new DataColumn("id");
        pk.AutoIncrement = true;
        Dt.Columns.Add(pk);
        Dt.PrimaryKey = new DataColumn[] { Dt.Columns["id"] };
        OleDbConnection SourceCon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\qh(1);Extended Properties=dBASE IV;");
        string SourceSql = "select * from [all] where  ABS(new) > 0 ";
        DA.SelectCommand = new OleDbCommand(SourceSql, SourceCon);
        DA.Fill(Dt);
        return Dt;
    }


我现在设置了主键了还是不行
回复

使用道具 举报

1

主题

5

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-7-22 17:00:01 | 显示全部楼层
原来的数据库不不在我的手里不能加主键 怎么办?
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-7-23 00:45:01 | 显示全部楼层
你用了更新,但没有相应的updatecommand
回复

使用道具 举报

1

主题

5

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-7-23 09:30:01 | 显示全部楼层
我是两个数据库我想将A数据库的所有数据copy到B数据库中

所以我用oledb适配器将A的数据全部全出来来后想用这个适配器一次性insert到B数据库中应该不需要update才对阿!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表