title: Updating tables with column names containing @ symbols using OleDbCommandBuilder in C#
body: <p>Greetings great SO comrades;</p>
  
  <p>I'm trying to use this code to make changes to a SQL Server database:</p>
  
  <pre><code>adapter = new OleDbDataAdapter(
      Db.GetRecordSql(table.Name, recordId), Db.Connection);
  OleDbCommandBuilder cmd = new OleDbCommandBuilder(adapter);
  DataSet ds = new DataSet();
  adapter.Fill(ds);
  </code></pre>
  
  <p>Then later, when saving changes made to a <code>DataRow</code>:</p>
  
  <pre><code>adapter.Update(new DataRow[] { row });
  </code></pre>
  
  <p>It works exactly the way I want it to work. The DB operations are all very simple, and the app supports multiple database formats, so this is the method that suits the task.</p>
  
  <p>My problem is that this method fails when the row contains a column with an <code>@</code> sign in its name. The database schema prefixes column names with an <code>@</code> sign to denote private meta data, such as creation/modification dates and checksums.</p>
  
  <p>When a column name contains an <code>@</code> sign, the <code>Update</code> method throws an <code>OleDbException</code>:</p>
  
  <blockquote>
    <p>Must declare the scalar variable @created</p>
  </blockquote>
  
  <p>Great. Now what?</p>
  
  <p>Seriously, I've googled this thing to death. I know it's a bit unusual to include an <code>@</code> symbol in a column name, but that's the hand I've been dealt.</p>
  
  <p>Any ideas? Pretty please? :)</p>