private void button2_Click(object sender, System.EventArgs e)
{
string source="server=ks052;uid=hdh;pwd=huang;database=hdh";
string strsql="select * from tabx"; SqlDataAdapter da=new SqlDataAdapter(strsql,source); 
DataSet ds=new DataSet();
da.Fill(ds,"tab");
dataGrid1.SetDataBinding(ds,"tab");
}

解决方案 »

  1.   

    并插入一條記錄private void button4_Click(object sender, System.EventArgs e)
    {
    string source="server=ks052;uid=hdh;pwd=huang;database=hdh";
    string strsql="insert into tabx values('H3',right(cast(year(getdate()) as varchar),1)+cast(month(getdate()) as varchar)+cast(day(getdate()) as varchar),'M',6000)"; SqlConnection scnTest=new SqlConnection(source);
    SqlCommand scmTest=new SqlCommand(strsql,scnTest);
    scnTest.Open();
    scmTest.ExecuteNonQuery();
    scnTest.Close();
    }
      

  2.   

    http://www.vikosoft.net/blogview.asp?logID=346
      

  3.   

    tabledataset这个变量里没有内容??
      

  4.   

    楼主的table名字是tabledataset变量动态赋予的,dataadapter无法工作。
    可以
    1、手动写,参考楼上
    2、明确写出table名字,代价是不能改了
    3、用sqlcommandbuilder
      

  5.   

    我一开始建的表可以执行我得代码,插入正确。
    但是我在oracle中重新建了一个用户,在新用户中建了一个相同的表,就不行了,就插入不进去,还提示上面的错误。
    完整的代码
    public class Dataset
    {
    public Dataset()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    }
    private OleDbDataAdapter adapter;
    private OleDbConnection thisConnection;
    private System.Data.DataSet dbview=new DataSet();
    private string connDB;
    private string tabledataset="dataset";
    private string tabledatafile="datafile";
    private string metatable;
    private XmlNodeList nodelist;
    private string sql;
    private OleDbCommandBuilder dbCommBld ;
    private DataRow newRow;
    public string InsertDatasetByXml(string SDirectory,string Depodir)
    {
    //解析xml文件取得数据库的连接串和表
    XmlDocument myDoc=new XmlDocument();
    myDoc.Load(SDirectory);
    XmlElement root=myDoc.DocumentElement;
    connDB=root.SelectSingleNode("//Metadata//server//database").Attributes.Item(1).InnerText;
    thisConnection=new OleDbConnection(connDB);
    thisConnection.Open();

    //更新dataset表内容
    sql=@"select * from "+tabledataset;
    adapter=new OleDbDataAdapter(sql,thisConnection);
    dbCommBld = new OleDbCommandBuilder(adapter);
               
    adapter.Fill(dbview,"Dataset"); nodelist=root.SelectNodes("//Metadata//server//database//table//field");
    newRow=dbview.Tables["Dataset"].NewRow();
    for(int i=0;i<nodelist.Count;i++)
    {
    if((nodelist[i].Attributes.Item(0).InnerText)=="datasetid")//SelectSingleNode("fieldname");
    {
    newRow["datasetid"]=nodelist[i].InnerText;
    string test=nodelist[i].InnerText;
    break;
    }
    }
    XmlNode temp1=root.SelectSingleNode("//Metadata//Format");
    XmlNode temp2=root.SelectSingleNode("//Metadata//MainFile");
    newRow["mainfile"]=temp2.InnerText;
    newRow["format"]="'"+temp1.InnerText;
    newRow["depotdir"]=Depodir;
    dbview.Tables["Dataset"].Rows.Add(newRow);
                      adapter.UpdateCommand=dbCommBld.GetUpdateCommand();
    adapter.Update(dbview,"Dataset");
    }
    }
    }
      

  6.   

    你的数据库中的表格是否没有主键?如果是这样,那么OleDbCommandBuilder无法生成对应的Updata,Insert和Delete语句,所以无法执行Updata命令。你检查一下你的数据库!
    (仅是一种参考)