如何解决这个错误...... [英] how to solve this error...

查看:73
本文介绍了如何解决这个错误......的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在将excel文件导入表格时在我的数据库表中添加新列,如唯一ID(主键),然后在代码后自动生成新的添加列到表(唯一ID): -



错误:=<无法=cast =object =of =type =System.Data.DataColumn。=>



我的代码:=





i want to add new column in my database table like unique id (primary key ) when import excel file to a table then automatic generate new add column to a table (unique id ) following code:-

error:= <unable to="" cast="" object="" of="" type="System.Data.DataColumn" .="">

my code:=


protected void btnUpload_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
string path = string.Concat((Server.MapPath("~/Data/" + FileUpload1.FileName)));
FileUpload1.PostedFile.SaveAs(path);
OleDbConnection OleDbcon = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;");
 
OleDbCommand cmd = new OleDbCommand("SELECT * FROM [Sheet3$]", OleDbcon);
OleDbDataAdapter objAdapter1 = new OleDbDataAdapter(cmd);
 
OleDbcon.Open();
DbDataReader dr = cmd.ExecuteReader();
 
string con_str = @"Data Source=vaio\sqlexpress;Initial Catalog=dbemp;Integrated Security=True";
 
// Bulk Copy to SQL Server 
SqlBulkCopy bulkInsert = new SqlBulkCopy(con_str);
bulkInsert.DestinationTableName = "tbdata";
bulkInsert.WriteToServer(dr);
OleDbcon.Close();
Array.ForEach(Directory.GetFiles((Server.MapPath("~/Data/"))), File.Delete);
Label1.ForeColor = Color.Green;
Label1.Text = "successfully inserted";
FetchData();
newrow();
 
}
else
{
Label1.ForeColor = Color.Red;
Label1.Text = "Please select the File";
}
}
public void FetchData()
{
SqlConnection con = new SqlConnection(@"Data Source=vaio\sqlexpress;Initial Catalog=dbemp;Integrated Security=True");
SqlCommand cmd = new SqlCommand("select * from tbdata", con);
con.Open();
SqlDataReader rdr = cmd.ExecuteReader();
GridView1.DataSource = rdr;
GridView1.DataBind();

}
public void newrow()
{
SqlConnection con;
SqlDataAdapter dladpt;
DataSet dldst;
DataTable mydt;
 
con = new SqlConnection(@"Data Source=vaio\sqlexpress;Initial Catalog=dbemp;Integrated Security=True");
dladpt = new SqlDataAdapter("select * from tbdata", con);
dldst = new DataSet();
mydt = new DataTable();
dladpt.Fill(mydt);
 
DataColumn dcolColumn = new DataColumn("Link", typeof(string));
mydt.Columns.Add(dcolColumn);
 
DataRow drowItem;
 
foreach (DataRow row in mydt.Columns)
{
drowItem = mydt.NewRow();
drowItem["Link"] = "secret";
mydt.Rows.Add(drowItem);
}
GridView1.DataSource = mydt;
GridView1.DataBind();
}
}

推荐答案

,OleDbcon);
OleDbDataAdapter objAdapter1 = new OleDbDataAdapter(cmd);

OleDbcon.Open();
DbDataReader dr = cmd.ExecuteReader();

string con_str = @ 数据源= vaio \sqlexpress;初始目录= dbemp;集成安全性=真;

// 批量复制到SQL Server
SqlBulkCopy bulkInsert = new SqlBulkCopy(con_str);
bulkInsert.DestinationTableName = < span class =code-string> tbdata;
bulkInsert.WriteToServer(dr);
OleDbcon.Close( );
Array.ForEach(Directory.GetFiles((Server.MapPath( 〜/ Data /))),File.Delete);
Label1.ForeColor = Color.Green;
Label1.Text = 已成功插入;
FetchData();
newrow();

}
else
{
Label1.ForeColor = Color.Red;
Label1.Text = 请选择文件;
}
}
public void FetchData()
{
SqlConnection con = new SqlConnection( @ Data Source = vaio \sqlexpress; Initial Catalog = dbemp; Integrated Security = True);
SqlCommand cmd = new SqlCommand( select *来自tbdata,con);
con.Open();
SqlDataReader rdr = cmd.ExecuteReader();
GridView1.DataSource = rdr;
GridView1.DataBind();

}
public void newrow()
{
SqlConnection con;
SqlDataAdapter dladpt;
DataSet dldst;
DataTable mydt;

con = new SqlConnection( @ Data Source = vaio \sqlexpress; Initial Catalog = dbemp; Integrated Security = True);
dladpt = new SqlDataAdapter( select *来自tbdata,con);
dldst = new DataSet();
mydt = new DataTable();
dladpt.Fill(mydt);

DataColumn dcolColumn = new DataColumn( Link typeof string ));
mydt.Columns.Add(dcolColumn);

DataRow drowItem;

foreach (DataRow row in mydt.Columns)
{
drowItem = mydt.NewRow();
drowItem [ 链接] = secret;
mydt.Rows.Add(drowItem);
}
GridView1.DataSource = mydt;
GridView1.DataBind();
}
}
", OleDbcon); OleDbDataAdapter objAdapter1 = new OleDbDataAdapter(cmd); OleDbcon.Open(); DbDataReader dr = cmd.ExecuteReader(); string con_str = @"Data Source=vaio\sqlexpress;Initial Catalog=dbemp;Integrated Security=True"; // Bulk Copy to SQL Server SqlBulkCopy bulkInsert = new SqlBulkCopy(con_str); bulkInsert.DestinationTableName = "tbdata"; bulkInsert.WriteToServer(dr); OleDbcon.Close(); Array.ForEach(Directory.GetFiles((Server.MapPath("~/Data/"))), File.Delete); Label1.ForeColor = Color.Green; Label1.Text = "successfully inserted"; FetchData(); newrow(); } else { Label1.ForeColor = Color.Red; Label1.Text = "Please select the File"; } } public void FetchData() { SqlConnection con = new SqlConnection(@"Data Source=vaio\sqlexpress;Initial Catalog=dbemp;Integrated Security=True"); SqlCommand cmd = new SqlCommand("select * from tbdata", con); con.Open(); SqlDataReader rdr = cmd.ExecuteReader(); GridView1.DataSource = rdr; GridView1.DataBind(); } public void newrow() { SqlConnection con; SqlDataAdapter dladpt; DataSet dldst; DataTable mydt; con = new SqlConnection(@"Data Source=vaio\sqlexpress;Initial Catalog=dbemp;Integrated Security=True"); dladpt = new SqlDataAdapter("select * from tbdata", con); dldst = new DataSet(); mydt = new DataTable(); dladpt.Fill(mydt); DataColumn dcolColumn = new DataColumn("Link", typeof(string)); mydt.Columns.Add(dcolColumn); DataRow drowItem; foreach (DataRow row in mydt.Columns) { drowItem = mydt.NewRow(); drowItem["Link"] = "secret"; mydt.Rows.Add(drowItem); } GridView1.DataSource = mydt; GridView1.DataBind(); } }


将数据库表中的一列设置为主键并自动生成。

然后你可以在INSERT命令中省略该列。



您也可以使用c#中的DataTable执行相同操作。将列设置为Int32类型,AutoGenerate = true。
Set one column in your database table to be primary key and also auto generated.
Then you can omit that column in your INSERT command.

You can do the same with a DataTable in c# too. Set the column to type Int32 and AutoGenerate = true.


这篇关于如何解决这个错误......的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆