C# 在c中将数据从datatable插入数据库时出现问题#
我有一个3列的Gridview,我在“添加”按钮的帮助下添加空行。现在,我正在尝试将网格中输入的数据插入到表中。这是我的密码C# 在c中将数据从datatable插入数据库时出现问题#,c#,asp.net,sql-server,sqlbulkcopy,C#,Asp.net,Sql Server,Sqlbulkcopy,我有一个3列的Gridview,我在“添加”按钮的帮助下添加空行。现在,我正在尝试将网格中输入的数据插入到表中。这是我的密码 SqlConnection con = new SqlConnection(ConfigurationManager .ConnectionStrings["gridconnection"] .ConnectionString); public void SetInitialRow() { DataTable dt = new DataTable(
SqlConnection con = new SqlConnection(ConfigurationManager
.ConnectionStrings["gridconnection"]
.ConnectionString);
public void SetInitialRow()
{
DataTable dt = new DataTable();
DataRow dr = null;
//dt.Columns.Add(new DataColumn("RowNumber", typeof(string)));
dt.Columns.Add(new DataColumn("Column1", typeof(string)));
dt.Columns.Add(new DataColumn("Column2", typeof(string)));
dt.Columns.Add(new DataColumn("Column3", typeof(string)));
dr = dt.NewRow();
// dr["RowNumber"] = 1;
dr["Column1"] = string.Empty;
dr["Column2"] = string.Empty;
dr["Column3"] = string.Empty;
dt.Rows.Add(dr);
//Store the DataTable in ViewState
ViewState["CurrentTable"] = dt;
Gridview1.DataSource = dt;
Gridview1.DataBind();
}
public void AddNewRowToGrid()
{
int rowIndex = 0;
if (ViewState["CurrentTable"] != null)
{
DataTable dtCurrentTable = (DataTable)ViewState["CurrentTable"];
DataRow drCurrentRow = null;
if (dtCurrentTable.Rows.Count > 0)
{
for (int i = 1; i <= dtCurrentTable.Rows.Count; i++)
{
//extract the TextBox values
TextBox box1 = (TextBox)Gridview1.Rows[rowIndex]
.Cells[1].FindControl("TextBox1");
TextBox box2 = (TextBox)Gridview1.Rows[rowIndex]
.Cells[2].FindControl("TextBox2");
TextBox box3 = (TextBox)Gridview1.Rows[rowIndex]
.Cells[3].FindControl("TextBox3");
drCurrentRow = dtCurrentTable.NewRow();
drCurrentRow["RowNumber"] = i + 1;
dtCurrentTable.Rows[i - 1]["Column1"] = box1.Text;
dtCurrentTable.Rows[i - 1]["Column2"] = box2.Text;
dtCurrentTable.Rows[i - 1]["Column3"] = box3.Text;
rowIndex++;
}
dtCurrentTable.Rows.Add(drCurrentRow);
ViewState["CurrentTable"] = dtCurrentTable;
Gridview1.DataSource = dtCurrentTable;
Gridview1.DataBind();
}
}
else
{
Response.Write("ViewState is null");
}
//Set Previous Data on Postbacks
SetPreviousData();
}
protected void SetPreviousData()
{
int rowIndex = 0;
if (ViewState["CurrentTable"] != null)
{
DataTable dt = (DataTable)ViewState["CurrentTable"];
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
TextBox box1 = (TextBox)Gridview1.Rows[rowIndex]
.Cells[1].FindControl("TextBox1");
TextBox box2 = (TextBox)Gridview1.Rows[rowIndex]
.Cells[2].FindControl("TextBox2");
TextBox box3 = (TextBox)Gridview1.Rows[rowIndex]
.Cells[3].FindControl("TextBox3");
box1.Text = dt.Rows[i]["Column1"].ToString();
box2.Text = dt.Rows[i]["Column2"].ToString();
box3.Text = dt.Rows[i]["Column3"].ToString();
rowIndex++;
}
}
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
SetInitialRow();
}
}
protected void ButtonAdd_Click(object sender, EventArgs e)
{
AddNewRowToGrid();
}
protected void ButtonAdd_Click1(object sender, EventArgs e)
{
DataTable dt = new DataTable();
DataRow dr = null;
dt.Columns.Add(new DataColumn("Column1", typeof(string)));
dt.Columns.Add(new DataColumn("Column2", typeof(string)));
dt.Columns.Add(new DataColumn("Column3", typeof(string)));
dr = dt.NewRow();
string consString = ConfigurationManager.ConnectionStrings["gridconnection"]
.ConnectionString;
using (SqlConnection connection = new SqlConnection(consString))
{
connection.Open();
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
{
//foreach (DataColumn c in dt.Columns)
// // bulkCopy.ColumnMappings.Add(c.Column1, c.Column2, c.Column3);
bulkCopy.DestinationTableName = "GridExcel";
//bulkCopy.ColumnMappings.Add(Column1, c.Column2, c.Column3);
SqlBulkCopyColumnMapping Column =
new SqlBulkCopyColumnMapping("Column1", "Column1");
bulkCopy.ColumnMappings.Add(Column);
SqlBulkCopyColumnMapping Column2nd =
new SqlBulkCopyColumnMapping("Column2", "Column2");
bulkCopy.ColumnMappings.Add(Column2nd);
SqlBulkCopyColumnMapping Column3rd =
new SqlBulkCopyColumnMapping("Column3", "Column3");
bulkCopy.ColumnMappings.Add(Column3rd);
try
{
bulkCopy.WriteToServer(dt);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
SqlConnection con=新的SqlConnection(ConfigurationManager
.ConnectionString[“网格连接”]
.连接字符串);
public void SetInitialRow()
{
DataTable dt=新的DataTable();
数据行dr=null;
//添加(新的数据列(“行数”,typeof(字符串));
Add(新的数据列(“Column1”,typeof(string));
Add(新的数据列(“Column2”,typeof(string));
Add(新的数据列(“Column3”,typeof(string));
dr=dt.NewRow();
//dr[“行数”]=1;
dr[“Column1”]=string.Empty;
dr[“Column2”]=string.Empty;
dr[“Column3”]=string.Empty;
dt.Rows.Add(dr);
//将数据表存储在ViewState中
视图状态[“当前表”]=dt;
Gridview1.DataSource=dt;
Gridview1.DataBind();
}
public void AddNewRowToGrid()
{
int rowIndex=0;
如果(ViewState[“CurrentTable”]!=null)
{
DataTable dtCurrentTable=(DataTable)视图状态[“CurrentTable”];
DataRow drCurrentRow=null;
如果(dtCurrentTable.Rows.Count>0)
{
对于(int i=1;i 0)
{
对于(int i=0;i
GridExcel是我的数据库表名,列名为Column1、Column2、Column3。问题是数据没有插入到表中。请帮助
protected void ButtonAdd_Click1(object sender, EventArgs e)
{
if (ViewState["CurrentTable"] != null)
{
DataTable dt = (DataTable)ViewState["CurrentTable"];
if (dt.Rows.Count > 0)
{
string consString = ConfigurationManager.ConnectionStrings["gridconnection"]
.ConnectionString;
using (SqlConnection connection = new SqlConnection(consString))
{
connection.Open();
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
{
//foreach (DataColumn c in dt.Columns)
// // bulkCopy.ColumnMappings.Add(c.Column1, c.Column2, c.Column3);
bulkCopy.DestinationTableName = "GridExcel";
//bulkCopy.ColumnMappings.Add(Column1, c.Column2, c.Column3);
SqlBulkCopyColumnMapping Column =
new SqlBulkCopyColumnMapping("Column1", "Column1");
bulkCopy.ColumnMappings.Add(Column);
SqlBulkCopyColumnMapping Column2nd =
new SqlBulkCopyColumnMapping("Column2", "Column2");
bulkCopy.ColumnMappings.Add(Column2nd);
SqlBulkCopyColumnMapping Column3rd =
new SqlBulkCopyColumnMapping("Column3", "Column3");
bulkCopy.ColumnMappings.Add(Column3rd);
try
{
bulkCopy.WriteToServer(dt);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
}
}
我不熟悉ASP.Net,但更新了您的按钮D_Click1,这可能会解决您的问题,这工作正常,并解决您的问题请检查此项是否收到任何错误消息?@varunbabbopzhath no您的Add方法创建了一个空数据表您没有从ViewState检索数据您的表
dt
有0行,因此插入了0行。我猜您还没有从gridview中读取该行。您正在盲目地创建新的datatable并将其更新到DB,请检查您的ButtonAd_Click1方法,并将datatable作为gridview数据源,这将解决您的问题