菜鸟提问:c#中利用 ado.net把txt导入到sql server 2008的问题,问题详尽易懂。求高手帮忙。
要将txt里面的数据都导入到SQL数据库中。txt格式如下图:数据库设计如下图:我新建一个win32控制台应用程序。usingSystem;usingSystem.Col...
要将txt里面的数据都导入到SQL数据库中。
txt格式如下图:
数据库设计如下图:
我新建一个win32控制台应用程序。
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;using System.Data;using System.Data.SqlClient;
namespace 导入txt尝试01{ class Program { static void Main(string[] args) { StreamReader sr = new StreamReader(new FileStream("F:/a3_1.txt", FileMode.Open, FileAccess.Read), System.Text.Encoding.Default); SqlConnection cn = new SqlConnection("Server=LENOVO-PC225;uid=sa;pwd=123456;database=数据库学习02"); string insertCmd = " insert into a3_2 values(@日期,@时间,@第一量,@第二量,@第三量,@第四量,@第五量,@第六量,@第七量,@第八量)"; char delimChar = ' ';//引号内为一个空格 string[] split = null; string strTemp = sr.ReadLine(); string point = string.Empty; while (strTemp != null) { split = strTemp.Split(delimChar); SqlCommand cmd = new SqlCommand(insertCmd, cn); cmd.Parameters.Add("@日期", SqlDbType.VarChar).Value = split[0]; cmd.Parameters.Add("@时间", SqlDbType.VarChar ).Value = split[1]; cmd.Parameters.Add("@第一量", SqlDbType.VarChar).Value = split[2]; cmd.Parameters.Add("@第二量", SqlDbType.VarChar).Value = split[3]; cmd.Parameters.Add("@第三量", SqlDbType.VarChar).Value = split[4]; cmd.Parameters.Add("@第四量", SqlDbType.VarChar).Value = split[5]; cmd.Parameters.Add("@第五量", SqlDbType.VarChar).Value = split[6]; cmd.Parameters.Add("@第六量", SqlDbType.VarChar).Value = split[7]; cmd.Parameters.Add("@第七量", SqlDbType.VarChar).Value = split[8]; cmd.Parameters.Add("@第八量", SqlDbType.VarChar).Value = split[9]; cn.Open(); try { cmd.ExecuteNonQuery(); } catch (System.Data.SqlClient.SqlException e) { Console.WriteLine(e.Message); } cn.Close(); strTemp = sr.ReadLine();
} sr.Close(); Console.ReadKey(); } }}执行后,在 cmd.Parameters.Add("@时间", SqlDbType.VarChar ).Value = split[1];此行中提升出错“索引超出了数组界限”。而数据库中只能导入第一行。
这个是什么问题?我刚接触ado.net,菜鸟。跪求技术老鸟帮忙。 展开
txt格式如下图:
数据库设计如下图:
我新建一个win32控制台应用程序。
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;using System.Data;using System.Data.SqlClient;
namespace 导入txt尝试01{ class Program { static void Main(string[] args) { StreamReader sr = new StreamReader(new FileStream("F:/a3_1.txt", FileMode.Open, FileAccess.Read), System.Text.Encoding.Default); SqlConnection cn = new SqlConnection("Server=LENOVO-PC225;uid=sa;pwd=123456;database=数据库学习02"); string insertCmd = " insert into a3_2 values(@日期,@时间,@第一量,@第二量,@第三量,@第四量,@第五量,@第六量,@第七量,@第八量)"; char delimChar = ' ';//引号内为一个空格 string[] split = null; string strTemp = sr.ReadLine(); string point = string.Empty; while (strTemp != null) { split = strTemp.Split(delimChar); SqlCommand cmd = new SqlCommand(insertCmd, cn); cmd.Parameters.Add("@日期", SqlDbType.VarChar).Value = split[0]; cmd.Parameters.Add("@时间", SqlDbType.VarChar ).Value = split[1]; cmd.Parameters.Add("@第一量", SqlDbType.VarChar).Value = split[2]; cmd.Parameters.Add("@第二量", SqlDbType.VarChar).Value = split[3]; cmd.Parameters.Add("@第三量", SqlDbType.VarChar).Value = split[4]; cmd.Parameters.Add("@第四量", SqlDbType.VarChar).Value = split[5]; cmd.Parameters.Add("@第五量", SqlDbType.VarChar).Value = split[6]; cmd.Parameters.Add("@第六量", SqlDbType.VarChar).Value = split[7]; cmd.Parameters.Add("@第七量", SqlDbType.VarChar).Value = split[8]; cmd.Parameters.Add("@第八量", SqlDbType.VarChar).Value = split[9]; cn.Open(); try { cmd.ExecuteNonQuery(); } catch (System.Data.SqlClient.SqlException e) { Console.WriteLine(e.Message); } cn.Close(); strTemp = sr.ReadLine();
} sr.Close(); Console.ReadKey(); } }}执行后,在 cmd.Parameters.Add("@时间", SqlDbType.VarChar ).Value = split[1];此行中提升出错“索引超出了数组界限”。而数据库中只能导入第一行。
这个是什么问题?我刚接触ado.net,菜鸟。跪求技术老鸟帮忙。 展开
3个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询