我需要导入.MDB文件,读取并保存在SQL Server中。我尝试了这个:
protected void Btn_Importar(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
if (FileUpload1.PostedFile.ContentType == "application/msaccess")
{
string filename = Path.GetFileName(FileUpload1.FileName);
FileUpload1.SaveAs(Server.MapPath("~/Upload/") + filename);
Label1.Text = "File uploaded successfully!";
//ReadMdb();
Insert();
}
}
}
public void Insert()
{
string strFile = Server.MapPath("~/Upload/teste.mdb");
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strFile;
var myDataTable = new DataTable();
using (var connection = new OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;" + "data source=" + strFile))
{
connection.Open();
var query = "SELECT * FROM BOLETO";
var command = new OleDbCommand(query, connection);
var reader = command.ExecuteReader();
Conexaocs con = new Conexaocs();
con.Conexao();
SqlCommand sqlComm = new SqlCommand("INSERT INTO BOLETO (CODIGO,NF_CONTA,TEXTO) VALUES (@CODIGO, @NF_CONTA, @TEXTO)", conn);
//if (reader.HasRows)
//{
// while (reader.Read())
// {
// //ListBox1.Items.Add(reader.GetInt32(0).ToString() + " - " + reader.GetString(1));
// }
for (int i = 0; i < reader.FieldCount; i++)
{
sqlComm.Parameters.AddWithValue("@CODIGO", reader[i]);
sqlComm.Parameters.AddWithValue("@NF_CONTA", reader[i]);
sqlComm.Parameters.AddWithValue("@TEXTO", reader[i]);
sqlComm.ExecuteNonQuery();
}
connection.Close();
}
}
但是,到了这一点就不省了!
for (int i = 0; i < reader.FieldCount; i++)
{
sqlComm.Parameters.AddWithValue("@CODIGO", reader[i]);
sqlComm.Parameters.AddWithValue("@NF_CONTA", reader[i]);
sqlComm.Parameters.AddWithValue("@TEXTO", reader[i]);
sqlComm.ExecuteNonQuery();
}
消息错误: System.InvalidOperationException:没有数据的行或列
有什么主意吗?谢谢
正如Gord Thompson所说,您需要遍历行而不是字段。尝试以下(未经测试的)代码:
if (reader.HasRows)
{
while (reader.Read())
{
sqlComm.Parameters.AddWithValue("@CODIGO", reader[0]);
sqlComm.Parameters.AddWithValue("@NF_CONTA", reader[1]);
sqlComm.Parameters.AddWithValue("@TEXTO", reader[2]);
sqlComm.ExecuteNonQuery();
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句