2015-03-13 72 views
0

我在写病人预约应用程序,当我点击我的按钮时,它应该从365天(从今天)添加到我的Access文件在Day1列下。C#错误 - 参数异常未处理

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

类型“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天?

谢谢。

+3

“数据源”后面没有'=',您可能必须用某种引号包装路径。 – gunr2171 2015-03-13 19:28:03

+0

并请使用参数化查询来防止SQL注入 – Sybren 2015-03-13 19:36:04

+0

@ gunr2171我有一个“毕竟”“数据源”,并没有造成问题。编辑:我觉得愚蠢,我没有意识到你提到,我没有一个。 – kolton 2015-03-13 19:54:50

回答

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. ,那么效果会更好