所以我跟着我在这里找到的大部分帮助。我创建了一个C#程序,它从文本文件中读取并插入到SQL数据库表中。我没有编译器错误,也没有运行时错误。但是,我不确定我的代码在哪里不允许将相关数据插入表中。当我在运行这个程序后去检查我的表时,该表仍然是空的。
这就是我所拥有的:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TestSimpleDb
{
public partial class Form1 : Form
{
private static string fileName = "c:/users/ronica singh/documents/visual studio 2015/Projects/TestSimpleDb/TestSimpleDb/Sample.txt";
SqlConnection conn = null;
SqlCommand cmd = null;
public Form1()
{
InitializeComponent();
richTextBox1.Dock = DockStyle.Fill;
}
private void Form1_Load(object sender, EventArgs e)
{
try
{
// Create connection
conn = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\SampleDb.mdf;Integrated Security=True");
// Create command
cmd = new SqlCommand();
cmd.Connection = conn;
// Open connection
conn.Open();
// Create table
CreateTextTable();
// Prepare insert command
PrepareInsertTextFile();
// Load text file
ExecuteInsertTextFile(fileName);
}
catch (SqlException ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
// Close connection
conn.Close();
}
}
private void CreateTextTable()
{
cmd.CommandText = "if exists(SELECT * FROM information_schema.tables WHERE table_name = 'Performance') DROP TABLE Performance";
cmd.CommandText = "CREATE TABLE Performance (Empl_No NChar(10), Assgn_No NChar(10), Start_Date NChar(10), Perf_% Int)";
}
private void PrepareInsertTextFile()
{
cmd.CommandText = @"INSERT INTO Performance(Empl_No, Assgn_No, Start_Date, Perf_%) VALUES (Empl_No, Assgn_No, Start_Date, Perf_%)";
cmd.Parameters.Add("Empl_No", SqlDbType.NChar);
cmd.Parameters.Add("Assgn_No", SqlDbType.NChar);
cmd.Parameters.Add("Start_Date", SqlDbType.NChar);
cmd.Parameters.Add("Perf_%", SqlDbType.NChar);
}
private void ExecuteInsertTextFile(string fileName)
{
//GetTextFile(fileName);
string[] allLines = File.ReadAllLines(fileName);
for (int i = 0; i < allLines.Length; i++)
{
string[] columns = allLines[i].Split(new char[0], StringSplitOptions.RemoveEmptyEntries);
if (i == 8 || i == 67 || i == 117 || i == 126 || i == 185 || i == 194 || i == 195 || i == 201 || i == 210 || i == 269 || i == 291 || i == 292 ||
i == 328 || i == 387 || i == 406 || i == 407 || i == 446 || i == 505 || i == 517 || i == 518 || i == 550 || i == 551 || i == 564 || i == 623 ||
i == 625 || i == 626 || i == 663 || i == 664 || i == 682 || i == 741 || i == 783 || i == 784 || i == 800 || i == 838 || i == 839 || i == 859 ||
i == 895 || i == 896 || i == 918 || i == 977 || i == 1025 || i == 1026 || i == 1036 || i == 1095 || i == 1117 || i == 1118 || i == 1154 || i == 1213)
{
if (columns[5] == "S")
{
cmd.Parameters["@Empl_No"].Value = columns[0];
cmd.Parameters["@Assgn_No"].Value = columns[4];
cmd.Parameters["@Start_Date"].Value = columns[9];
cmd.Parameters["@Perf_%"].Value = columns[16];
}
else if (columns[1] == "T")
{
cmd.Parameters["@Empl_No"].Value = columns[0];
cmd.Parameters["@Start_Date"].Value = columns[5];
cmd.Parameters["@Perf_%"].Value = columns[10];
}
}
else if ((i > 8 && i < 59) || (i > 67 && i < 117) || (i > 126 && i < 177) || (i > 185 && i < 194) || (i > 195 && i < 201) || (i > 210 && i < 261) || (i > 269 && i < 291) ||
(i > 292 && i < 320) || (i > 328 && i < 379) || (i > 387 && i < 406) || (i > 407 && i < 438) || (i > 446 && i < 497) || (i > 505 && i < 517) || (i > 518 && i < 550) ||
(i > 551 && i < 556) || (i > 564 && i < 615) || (i > 623 && i < 625) || (i > 626 && i < 663) || (i > 664 && i < 674) || (i > 682 && i < 733) || (i > 741 && i < 783) ||
(i > 784 && i < 792) || (i > 800 && i < 838) || (i > 839 && i < 851) || (i > 859 && i < 895) || (i > 896 && i < 909) || (i > 918 && i < 969) || (i > 997 && i < 1025) ||
(i > 1026 && i < 1028) || (i > 1036 && i < 1087) || (i > 1095 && i < 1117) || (i > 1118 && i < 1146) || (i > 1154 && i < 1205) || (i > 1213 && i < 1264))
{
cmd.Parameters["@Assgn_No"].Value = columns[3];
cmd.Parameters["@Start_Date"].Value = columns[8];
cmd.Parameters["@Perf_%"].Value = columns[15];
}
}
}
}
}
任何人都可以帮助我解释为什么我没有看到任何插入数据库表的内容。感谢。