【发布时间】:2012-04-07 00:55:47
【问题描述】:
鉴于 C# 代码,如下所示,附加到“.accdb”文件;当我运行它时,我收到消息:
mscorlib.dll 中出现“System.FormatException”类型的未处理异常附加信息:索引(从零开始)必须是 大于或等于零且小于参数的大小 列表。
发生了什么事?
public partial class Form1 : Form
{
OleDbConnection vcon = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;data source=C:\Hazardous Materials\KinneyDatabase.accdb");
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
{
vcon.Open();
}
try
{
StreamReader sr = new StreamReader(@"C:\Hazardous Materials\cities.txt");
string line = sr.ReadLine();
StreamReader sr2 = new StreamReader(@"C:\Hazardous Materials\drugs.txt");
string line2 = sr2.ReadLine();
while (line != null)
{
comboBox1.Items.Add(line);
line = sr.ReadLine();
}
while (line2 != null)
{
comboBox2.Items.Add(line2);
line2 = sr2.ReadLine();
}
{
textBox2.Text = "Date";
}
}
catch (System.Exception ex)
{
MessageBox.Show("Error: " + ex.Message);
}
}
private void button1_Click(object sender, EventArgs e)
{
string addRemove = "";
if (radioButton1.Checked)
{
addRemove = radioButton1.Text;
}
else if (radioButton2.Checked)
{
addRemove = radioButton2.Text;
}
{
MessageBox.Show("You have entered the following information: \n\n"
+ " Date: " + textBox2.Text + "\n"
+ " Store#: " + comboBox1.Text + "\n"
+ " Medication: " + comboBox2.Text + "\n"
+ " Quantity: " + textBox1.Text + "\n"
+ " Initials: " + textBox3.Text + "\n"
+ " Initials: " + addRemove);
}
}
private void button2_Click(object sender, EventArgs e)
{
new Form2().Show();
}
private void button3_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void toolStripMenuItem1_Click(object sender, EventArgs e)
{
MessageBox.Show("Scripted by Geoff Bertollini. March 2012");
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
var date = DateTime.Now.ToString("MM/dd/yyyy");
textBox2.Text = date;
}
private void label4_Click_1(object sender, EventArgs e)
{
}
private void exitToolStripMenuItem1_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void button4_Click(object sender, EventArgs e)
{
{
string addRemove = "";
if (radioButton1.Checked)
{
addRemove = radioButton1.Text;
}
else if (radioButton2.Checked)
{
addRemove = radioButton2.Text;
}
string vsql = string.Format("insert into Log values ({0}','{1}','{2}','{3}','{4}','{5}','{6}'),comboBox1.Text, comboBox2.Text, int.Parse(textBox1.Text), int.Parse(textBox1.Text), textBox2.Text, textBox3.Text, addRemove");
OleDbCommand vcom = new OleDbCommand(vsql, vcon);
vcom.ExecuteNonQuery();
MessageBox.Show("The following data has been saved to the database: \n\n"
+ "Date: " + textBox2.Text + "\n"
+ "Store#: " + comboBox1.Text + "\n"
+ "Medication: " + comboBox2.Text + "\n"
+ "Quantity: " + textBox1.Text + "\n"
+ "Initials: " + textBox3.Text);
vcom.Dispose();
}
}
}
}
【问题讨论】:
-
异常发生在代码的哪一行?
-
还有一个可爱的 sql 注入漏洞。
标签: c#