using System;
using System.Data;
using System.Data.SqlClient;namespace localhost

/// <summary>
/// AccessDB 的摘要说明。
/// 数据库通用模块
/// 数据库通用模块
///陈根发
///2005-1-4
/// </summary>
public class AccessDB
{

private string Connectstr="server=(local);database=NanJingHotLine;uid=sa;pwd=sa";
private SqlDataAdapter da;
private SqlConnection Dataconnection;
private DataSet ds;
public AccessDB()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
//打开连接
// public string Get_cnnstr
// {
// get
// {
// return Connectstr;
//
// }
// set
// {
// if(Connectstr!=value)
// {
// Connectstr=value;
// }
// }
// } private void OpenConn()
{
log log=new log (); try
{
Dataconnection =new SqlConnection();
if (Dataconnection.State ==ConnectionState.Closed)
{
Dataconnection.ConnectionString = Connectstr;
Dataconnection.Open();
}
}
catch(System.Exception e)
{
log.Save(e, "");
 
}

}
//==================================================
//关闭连接
//===================================================
private void CloseConn()
{
log log=new log ();
try
{
if( Dataconnection.State == ConnectionState.Open)
{
Dataconnection.Close();
}
}
catch(System.Exception e)
{
log.Save(e, "");
} }

// 事务处理一
private void OpenTransConn()
{
log log=new log ();
SqlConnection tmpConn;
try
{
tmpConn =new  SqlConnection();
tmpConn.ConnectionString = Connectstr;
tmpConn.Open();
}
catch(System.Exception e)
{
log.Save(e, "");
}

}
//事务处理二
public void CloseTransConn(SqlConnection conn)
{
log log=new log ();
try
{
if(conn.State == ConnectionState.Open)
{
conn.Close();
}

}
catch(System.Exception e)
{
log.Save(e, "");
                
} }  
//操作是否成功
public Boolean UpdateDataBase(String sqlstr ) 
{
log log=new log ();
try
{
OpenConn();
SqlCommand cmdtables=new SqlCommand (sqlstr,Dataconnection);
cmdtables.CommandType = CommandType.Text;
cmdtables.ExecuteNonQuery();
cmdtables = null;
CloseConn();
}
catch(System.Exception e)
{
log.Save(e, "");
return false;
}
return true; }
// '************************************
//'定义一个用于返回数据集的公共查询函数
//'***********************************
public DataSet GetDataFromDB( String sqlstr ) 
{
log log=new log ();
try
{
OpenConn();
da = new SqlDataAdapter(sqlstr, Dataconnection);
ds = new DataSet();
ds.Clear();
da.Fill(ds);
da = null;
CloseConn();
}
catch(System.Exception e)
{
log.Save(e, "");                
}
finally
{
CloseConn();
}
if(ds.Tables.Count>0 || ds.Tables[0].Rows .Count  >=0 )
{
return ds;
}
else
{
return null;
}
}
}}

解决方案 »

  1.   

    新增时,你可以先DataRow dr = new DataRow()
    然后dr["Field1"] = XXX;
    ……
    然后dataset.AddRow(dr);操作时,你可以DataRow dr = dataset.table["XXX"].Rows.find(yourrow);
    然后dr[]操作这个row
    然后update这个dataset
      

  2.   

    把生成的DataRow传到另一个窗体中进行编辑。
      

  3.   

    写一个insert 语句传入我的UpdateDataBase 就ok
      

  4.   

    但我現在是強型別的DataSet,並且我在新增、修改時,是在前端控件裡面輸入,控件都已邦定到了DataSet的相應欄位。
      

  5.   

    如果是帮定了的话,你对控件所做的操作(删除、修改、新增),自动会反映到相对应的数据集中;然后DataAdapter会区分三个操作,对数据库进行不同的操作。不知道你数据访问层是否给DataAdapter的updateCommand insertCommand deleteCommand分别赋了SQL语句没有?
      

  6.   

    當然有了,我的DataAdapter是完整的!