C#错误 - 参数异常未处理

时间:2015-03-13 19:26:17

标签: c# ms-access visual-studio-2013 windowsformsintegration

我正在编写一个患者预约应用程序,当我点击我的按钮时,它应该在Day1列下的365天(从今天起)添加到我的Access文件中。

现在,它之前正在运作,但现在它给了我一个错误。

  

未处理的类型' System.ArgumentException'发生在System.Data.dll

中      

附加信息:初始化字符串的格式不符合从索引34开始的规范。

代码:

private void button3_Click(object sender, EventArgs e)
{
        DateTime a = dateTimePicker1.Value.Date;
  HERE-> System.Data.OleDb.OleDbConnection conn = new
System.Data.OleDb.OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data
SourceC:\Users\Kolton\Desktop\Doctor App\Database1.accdb"); <- TO HERE

        conn.Open();

        for (int i = 0; i < 366; i++)
        {
            DateTime b = a.AddDays(i);
            string c = b.ToShortDateString();

            using (System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand())
            {
                cmd.Connection = conn;
                cmd.CommandText = "Insert Into Times (Date1) values ('" + c + "')";

                cmd.ExecuteNonQuery();
            }
        }
    }

感谢任何帮助。

此外,试图在这里一石二鸟。作为一个额外的问题,是否可以使此按钮删除列(Date1)下的所有行,然后将其添加365天?

感谢。

2 个答案:

答案 0 :(得分:1)

在顶部导入

System.Data.OleDb;

private void button3_Click(object sender, EventArgs e)
{
 DateTime a = dateTimePicker1.Value.Date;

 using(OleDbConnection conn = new
 OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data
 Source=C:\Users\Kolton\Desktop\Doctor App\Database1.accdb")) 
 {
        for (int i = 0; i < 366; i++)
        {
            DateTime b = a.AddDays(i);
            string c = b.ToShortDateString();

            using (System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand())
            {
                cmd.Connection = conn;
                cmd.CommandText = "Insert Into Times (Date1) values ('" + c + "')";
                conn.Open();
                cmd.ExecuteNonQuery();
            }

        }
    }
  }
  1. 设置连接字符串
  2. 导入System.Data.OledDB
  3. 同时使用用于连接
  4. 如果使用参数化查询
  5. 会更好

答案 1 :(得分:0)

要回答您的奖励问题,您可以直接访问UPDATE查询:

https://support.office.com/en-sg/article/Create-and-run-an-update-query-9dddc97c-f17d-43f4-a729-35e5ee1e0514

UPDATE table     SET newvalue     WHERE criteria;

所以答案看起来像这样:

UPDATE Sample set Field1 = DateAdd('d', 365, Field1)

注意:我同意gunr2171,等号可能是问题。 Upvoted