你好,我用DataRow row=dataSet.Tables[0].NewRow()这种方法添加数据,我想用
SqlCommandBuilder cmdBuild=new SqlCommandBuilder(dataAdapter);这种方法保存,我该如何写这个保存方法,我试了很久都保存不成功,能告诉我怎么做嘛?数据集的相关添加代码如下: ds = allman.dataSet;//数据集
string newUserNo = AutoID("tb_user", "ID");
DataRow row = ds.Tables["tb_user"].NewRow();//实例化对象
row["用户名"] = userName;
row["密码"] = userPwd;
row["编号"] = newUserNo;
ds.Tables["tb_user"].Rows.Add(row);//讲新行添加到dataSet中保存数据的方法代码如下:
/// <summary>
/// 功能:根據UpdateTable生成需要的指令
/// </summary>
/// <returns>生成成功返回true,否則返回false</returns>
private bool BuildSQLCmd()
{
//如果更新表为空则退出
if (UpdateTable.Length <= 0)
{
WriteLog("没有设置更新表,不能生成更新和删除指令", true);
return false;
}
SqlCommand cmd;
string strUpdateField = strField;
//如果更新表與實體的名稱不同,則要讀取UpdateTable的字段信息
if (UpdateTable != EntityName)
{
//得到更新的表結構
cmd = new SqlCommand("select top 0 * from " + UpdateTable);
cmd.CommandType = CommandType.Text;
cmd.Connection = DBConn;
dataAdapter.SelectCommand = cmd;
try
{
dataAdapter.FillSchema(dataSet, SchemaType.Source, UpdateTable);
}
catch (Exception E)
{
WriteLog("讀取數據失敗:" + E.Message, true);
return false;
}
DataTable tempTable = dataSet.Tables[UpdateTable];
DataColumnCollection FieldListUpdate=tempTable.Columns;
DataColumnCollection FieldListEntity = dataSet.Tables[EntityName].Columns;
strUpdateField = "";
//找到在EntityName和UpdateTable中都出現的字段,並生成更新字段列表
for (int i = 0; i < FieldListUpdate.Count - 1; i++)
{
string FieldName = FieldListUpdate[i].ColumnName; if (FieldListEntity.IndexOf(FieldName) >= 0)
{
if (strUpdateField == "")
strUpdateField = FieldName;
else
strUpdateField = strUpdateField + "," + FieldName;
}
}
}
//得到更新的表結構
cmd = new SqlCommand("select top 0 " + strUpdateField + " from " + UpdateTable);
cmd.CommandType = CommandType.Text;
cmd.Connection = DBConn;
dataAdapter.SelectCommand = cmd;
SqlCommandBuilder cmdBuild=new SqlCommandBuilder(dataAdapter);//SQL Command生成器
this.CreateCmd = true;
return true;
} /// <summary>
/// 功能:保存數據
/// </summary>
/// <param name="UseTransaction">是否戶用事務</param>
/// <param name="ShowMsg">保存後是否要提示信息。</param>
/// <returns>保存成功返回真,否則返回假</returns>
public bool Save(bool UseTransaction, bool ShowMsg)
{
//如果还没有创建数据操作指令则创建,如果创建失败则不能保存。
if (CreateCmd == false)
{
if (BuildSQLCmd() == false)
return false;
}
//更新數據
try
{
dataAdapter.Update(dataSet, EntityName);//指定表名
}
catch (Exception E)
{ WriteLog("保存失敗:" + E.Message,ShowMsg);
return false;
}
WriteLog("保存成功!", ShowMsg);
return true;
}可是我用这方法保存不成功,难道我在做生成表结构的时候出错了吗?报错显示为:from附近有出错,但是我觉得没错啊!
请指教,能告诉我怎么做吗?恳请附上代码,不胜感激!
SqlCommandBuilder cmdBuild=new SqlCommandBuilder(dataAdapter);这种方法保存,我该如何写这个保存方法,我试了很久都保存不成功,能告诉我怎么做嘛?数据集的相关添加代码如下: ds = allman.dataSet;//数据集
string newUserNo = AutoID("tb_user", "ID");
DataRow row = ds.Tables["tb_user"].NewRow();//实例化对象
row["用户名"] = userName;
row["密码"] = userPwd;
row["编号"] = newUserNo;
ds.Tables["tb_user"].Rows.Add(row);//讲新行添加到dataSet中保存数据的方法代码如下:
/// <summary>
/// 功能:根據UpdateTable生成需要的指令
/// </summary>
/// <returns>生成成功返回true,否則返回false</returns>
private bool BuildSQLCmd()
{
//如果更新表为空则退出
if (UpdateTable.Length <= 0)
{
WriteLog("没有设置更新表,不能生成更新和删除指令", true);
return false;
}
SqlCommand cmd;
string strUpdateField = strField;
//如果更新表與實體的名稱不同,則要讀取UpdateTable的字段信息
if (UpdateTable != EntityName)
{
//得到更新的表結構
cmd = new SqlCommand("select top 0 * from " + UpdateTable);
cmd.CommandType = CommandType.Text;
cmd.Connection = DBConn;
dataAdapter.SelectCommand = cmd;
try
{
dataAdapter.FillSchema(dataSet, SchemaType.Source, UpdateTable);
}
catch (Exception E)
{
WriteLog("讀取數據失敗:" + E.Message, true);
return false;
}
DataTable tempTable = dataSet.Tables[UpdateTable];
DataColumnCollection FieldListUpdate=tempTable.Columns;
DataColumnCollection FieldListEntity = dataSet.Tables[EntityName].Columns;
strUpdateField = "";
//找到在EntityName和UpdateTable中都出現的字段,並生成更新字段列表
for (int i = 0; i < FieldListUpdate.Count - 1; i++)
{
string FieldName = FieldListUpdate[i].ColumnName; if (FieldListEntity.IndexOf(FieldName) >= 0)
{
if (strUpdateField == "")
strUpdateField = FieldName;
else
strUpdateField = strUpdateField + "," + FieldName;
}
}
}
//得到更新的表結構
cmd = new SqlCommand("select top 0 " + strUpdateField + " from " + UpdateTable);
cmd.CommandType = CommandType.Text;
cmd.Connection = DBConn;
dataAdapter.SelectCommand = cmd;
SqlCommandBuilder cmdBuild=new SqlCommandBuilder(dataAdapter);//SQL Command生成器
this.CreateCmd = true;
return true;
} /// <summary>
/// 功能:保存數據
/// </summary>
/// <param name="UseTransaction">是否戶用事務</param>
/// <param name="ShowMsg">保存後是否要提示信息。</param>
/// <returns>保存成功返回真,否則返回假</returns>
public bool Save(bool UseTransaction, bool ShowMsg)
{
//如果还没有创建数据操作指令则创建,如果创建失败则不能保存。
if (CreateCmd == false)
{
if (BuildSQLCmd() == false)
return false;
}
//更新數據
try
{
dataAdapter.Update(dataSet, EntityName);//指定表名
}
catch (Exception E)
{ WriteLog("保存失敗:" + E.Message,ShowMsg);
return false;
}
WriteLog("保存成功!", ShowMsg);
return true;
}可是我用这方法保存不成功,难道我在做生成表结构的时候出错了吗?报错显示为:from附近有出错,但是我觉得没错啊!
请指教,能告诉我怎么做吗?恳请附上代码,不胜感激!
SqlDataAdapter da = new SqlDataAdapter("Select * from tb", cn);
DataSet ds = new DataSet();
cn.Open();
da.Fill(ds);
cn.Close(); //更新操作
ds.Tables[0].Rows[0]["Name"] = "test";
cn.Open();
SqlCommandBuilder cmd = new SqlCommandBuilder(da);
da.Update(ds.Tables[0]);
cn.Close();