2013-11-20 6 views
0

У меня есть база данных, у которой есть столбец идентификатора, а столбец ID - тип BIGINT. Я считаю, что моя проблема связана с преобразованием столбца идентификатора для правильного типа, чтобы код вставки работал. Я попытался преобразовать его, но не смог получить правильный синтаксис.Указанный листинг недействителен с использованием C#

Вот мой код ...

OleDbCommand cmd1 = new OleDbCommand("select ID, Name", con); 
cmd1.Connection = con; 
con.Open(); 
int result = (int)cmd1.ExecuteScalar(); 
sqlcmd.CommandText = "INSERT INTO MyTable(ID, Name) VALUES(@ID, @Name)"; 
sqlcmd.Parameters.Clear(); 
sqlcmd.Parameters.Add("@ID", SqlDbType.VarChar).Value = result; 
+0

эта строка 'cmd1.Connection = CON;' является излишним. Каково точное исключение? –

+2

помимо проблемы с литой, почему вы пытаетесь вставить запись с тем же идентификатором? – Habib

ответ

1

BIGINT =64-бит, поэтому используйте либо тип C# long, либо System.Int64.

Кроме того, изменить эту строку:

sqlcmd.Parameters.Add("@ID", SqlDbType.VarChar).Value = result; 

Для этого:

sqlcmd.Parameters.Add("@ID", SqlDbType.BigInt).Value = result; 
8

Использование long:

long result = (long)cmd1.ExecuteScalar();  

Диапазон: от –9,223,372,036,854,775,808 до 9,223,372,036,854,775,807

Подпись 64-разрядное целое число System.Int64

Смежные вопросы