2015-12-02 1 views
2

Благодарим вас за любую помощь, которую вы можете предложить. В настоящее время я создаю программу с Visual Studio 2015 и пытаюсь написать метод, который будет выполнять INSERT INTO таблицу, которую я уже установил.C# sql INSERT IN TO Throwing Exception System.Data.SqlClient.SqlException

Когда я запускаю мой код я получаю

Исключение брошено:. '' System.Data.SqlClient.SqlException в System.Data.dll»сообщение

исключение в моей консоли я очень новый SQL поэтому любые основные принципы и советы будут весьма признателен!

private void InsertIntoAccount(int number, string type, string date) 
{ 
    using (SqlConnection connection1 = new SqlConnection(connectionString)) 
    { 
     //Establish a connection 
     connection1.Open(); 
     string sqlstring = "INSERT INTO Account (AccountNumber, Type, DateOpened) VALUES (@number, @type, @date)"; 

     SqlCommand cmd = new SqlCommand(sqlstring, connection1); 

     //Fill in parameters 
     cmd.Parameters.Add("@number", SqlDbType.Int).Value = number; 
     cmd.Parameters.Add("@type", SqlDbType.VarChar, 100).Value = type; 
     cmd.Parameters.Add("@date", SqlDbType.VarChar, 100).Value = date; 

     //Execute 
     //<REMOVED> cmd.CommandType = CommandType.Text; 
     cmd.ExecuteNonQuery(); 
     connection1.Close(); 
    } 
}  
+0

Любое внутреннее исключение? –

+0

Какие типы столбцов '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' –

+0

Мне жаль, но вы можете уточнить? во время выполнения это единственное исключение.На стороне примечания (затяжной области, вызывающей озабоченность), я думаю, что моя строка подключения правильная, потому что у меня есть рабочая форма имени пользователя/пароля в visual studio, которая откроет и закроет тестовое соединение. EDIT: номер учетной записи является int, а другой два являются строками –

ответ

1

Попробуйте

  cmd.CommandTimeout = 300; 
      cmd.CommandType = CommandType.Text; 

Также с DateOpened поля, является то, что тип VARCHAR или является то, что типа дата/даты и времени

, если он имеет тип дата/DateTime попытаться преобразовать строку в объект даты, а затем изменить линия до

cmd.Parameters.Add("@date", SqlDbType.Date, 100).Value = date; 
+0

. Вопросы следует задавать как комментарии, а не как часть вашего «answer» –

+0

Да, к сожалению, для этого мне понадобится еще 2 точки репутации, поэтому, чтобы попытаться ответить на вопрос, я также попытался задать вопросы, которые позволят OP вернуться и посмотреть на структуру данных. – Spasticmonkey

+1

Im совершенно новый к визуальной студии, поэтому я ценю, что вы все относитесь ко мне здесь. Я заметил, что в разделе «События» он дает больше информации об ошибке. Он записывает «Invalid Object name» Account »внутри параметров исключения. Однако при проверке моей диаграммы, из которой визуальная студия генерировала SQL для создания таблиц, это имя фактически является учетной записью. Еще раз спасибо –

0

Убедитесь, что типы данных базы данных верны. У вас есть поле даты, но вы назначаете значение с типом данных VARCHAR. Попробуйте изменить объявление 3-го параметра примерно так:

cmd.Parameters.Add("@date", SqlDbType.Date).Value = date; 
0

Очень вероятно, что значение строки подключения неверно. Ошибка означает, что в базе данных нет таблицы Account, которую вы указываете с помощью строки подключения.

В примере вы передаете строковое значение как строку соединения, если вы определили его где-то в коде.

Строка соединения:

Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername; 

Password = MyPassword;

Пример:

connectionString="Data Source=(localdb)\MSSQLLocalDB; Initial Catalog=test; Integrated Security=True;" 

перекрестную этой переменной. Исходным каталогом должно быть имя базы данных.

Лучшим подходом может быть чтение строки подключения от web.config.

SqlConnection connection1 = new SqlConnection(ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString)