Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/104: Рейтинг темы: голосов - 104, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 13.10.2014
Сообщений: 13
1

Ошибка "Conversion failed when converting from a character string to uniqueidentifier" в INSERT запросе

18.08.2016, 02:56. Показов 18753. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Выдаёт данную ошибку для тех кто разбирается
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
System.Data.SqlClient.SqlException произошло
  HResult=-2146232060
  Message=Conversion failed when converting from a character string to uniqueidentifier.
  Source=.Net SqlClient Data Provider
  ErrorCode=-2146232060
  Class=16
  LineNumber=1
  Number=8169
  Procedure=""
  Server=(LocalDB)\v11.0
  State=2
  StackTrace:
       в System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
       в System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
       в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
       в System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
       в System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout, Boolean asyncWrite)
       в System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite)
       в System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
       в WindowsFormsApplication1.reg.button1_Click(Object sender, EventArgs e) в d:\Program Files\test c#\1\WindowsFormsApplication1\WindowsFormsApplication1\reg.cs:строка 26
  InnerException:
вот сам код
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
namespace WindowsFormsApplication1
{
    public partial class reg : Form
    {
        SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=D:\Program Files\test c#\1\WindowsFormsApplication1\WindowsFormsApplication1\Data.mdf;Integrated Security=True;Connect Timeout=30;");
        public reg()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            con.Open();
            SqlDataAdapter sda = new SqlDataAdapter("insert into LOGIN (Id,login,pasword,status)values('"+textBox1.Text+"','"+textBox2.Text+"','"+textBox3.Text+"','"+textBox4.Text+"')",con);
            sda.SelectCommand.ExecuteNonQuery();// тут ошибку выдаёт
            con.Close();
 
            MessageBox.Show("Регестрация прошла успешно");
            con.Close();
            
        }
       public static void main(string[] args)
       {
           Application.Run(new reg());
       }
 
       private void reg_Load(object sender, EventArgs e)
       {
 
       }
    }
}
вопрос что может быть какая проблема и как решить.
P.S. ну я так понял что с бд ошибка но что именно я не понял ... изучать с# только начал не будьте строги и если не составит труда объясните подробнее
P.S.S Адмны извените если не в ту темы написал ну я посчитал что эта самая подходящяя ...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.08.2016, 02:56
Ответы с готовыми решениями:

Ошибка: Conversion failed when converting date and/or time from character string.
Все время эту ошибку выдает. Как изменить в запросе чтобы не ругалось. //запрос на...

Ошибка Conversion failed when converting character string to smalldatetime data type
Всем привет, подскажите кто может с ошибкой, которая возникла у меня про отправки запроса через...

Conversion failed when converting date and/or time from character string
ОШИБКА, НЕ ВОЗМОЖНО ВСТАВИТЬ ДАННЫЕ В ТАБЛИЦУ MISSION CREATE DATABASE LAB8_VAR18 use...

Conversion failed when converting date and/or time from character string
В Форме: Dim ID As Integer Dim Company_Name As String Dim License_Key As...

5
Администратор
Эксперт .NET
17548 / 13771 / 5298
Регистрация: 17.03.2014
Сообщений: 28,247
Записей в блоге: 1
18.08.2016, 10:38 2
Лучший ответ Сообщение было отмечено yafidik как решение

Решение

yafidik, текст ошибки "Conversion failed when converting from a character string to uniqueidentifier" говорит сам за себя. Какая-то из колонок имеет тип uniqueidentifier (по другому GUID), а значение которое ты передал в INSERT не получается преобразовать в него. Предполагаю что это колонка Id. У тебя в коде Id берется из textBox1 что врядли имеет сиысл т.к. ключи это внутренняя кухня БД и пользователи их не видят и не вводят. Вместо этого можно подставить функцию NEWID которая сгенерирует новый GUID. При желании можно сгенерировать Guid и на стороне C# через Guid.NewGuid.

Вместо SqlDataAdapter я бы использовал SqlCommand и что самое важное передавал бы значения колонок через SqlParameter т.к. это более безопасно и обеспечивает более высокую производительность SQL Server.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const string CONNECTION_STRING = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=D:\Program Files\test c#\1\WindowsFormsApplication1\WindowsFormsApplication1\Data.mdf;Integrated Security=True;Connect Timeout=30;";
 
private void button1_Click(object sender, EventArgs e)
{
    using (var con = new SqlConnection(CONNECTION_STRING))
    {
        var cmd = new SqlCommand("insert into LOGIN (Id,login,pasword,status) values(NEWID(),@login,@password,@status)", con);
        cmd.Parameters.AddWithValue("@login", textBox2.Text);
        cmd.Parameters.AddWithValue("@password", textBox3.Text);
        cmd.Parameters.AddWithValue("@status", textBox4.Text);
        con.Open();
        cmd.ExecuteNonQuery();
    }
    MessageBox.Show("Регестрация прошла успешно");
}
1
1158 / 880 / 513
Регистрация: 09.04.2014
Сообщений: 2,084
18.08.2016, 10:39 3
Лучший ответ Сообщение было отмечено yafidik как решение

Решение

у вас в таблице LOGIN поле Id описано как uniqueidentifier, т.е. Guid, а в textBox1 вы вводите что-то, что текстовым представлением Guid не является
1
0 / 0 / 0
Регистрация: 13.10.2014
Сообщений: 13
18.08.2016, 11:08  [ТС] 4
nedel, OwenGlendower, спасибо огромное ... глупая ошибка .... а мучился второй день .... можно закрывать тему... вопрос решён
P.S. я на форумах редко сижу обычно после решения проблем пишут можно закрыть тему ... вот и я также XD
0
OwenGlendower
18.08.2016, 11:13
  #5

Не по теме:

Цитата Сообщение от yafidik Посмотреть сообщение
обычно после решения проблем пишут можно закрыть тему ... вот и я также
Обычно после этого тему не закрывают. Вот и сейчас так же :read:

0
0 / 0 / 0
Регистрация: 13.10.2014
Сообщений: 13
19.08.2016, 20:32  [ТС] 6
OwenGlendower, я форумы как то не очень любил и изредка пользовался... так что извините...
0
19.08.2016, 20:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.08.2016, 20:32
Помогаю со студенческими работами здесь

Исключение System.Data.SqlClient.SqlException: "Conversion failed when converting date and/or time from character string
System.Data.SqlClient.SqlException: "Conversion failed when converting date and/or time from...

Conversion failed when converting the nvarchar value
Не пойму в чем ошибка конвертации. string s = Page.User.Identity.Name.ToString(); ...

Ошибка "Conversion failed when converting the nvarchar value"
Помогите пожалуйста с запросом. Выполняю данных код try ...

Conversion failed when converting the varchar value 'a1' to data type int
INT DEFAULT ((0)) NOT NULL, using (SqlConnection sqlCon = new...

Conversion failed when converting the nvarchar value 'Label' to data type int.
Есть сайт Asp.net. Помогите разобраться, на локальном компьютере все работает нормально. Скинул на...

Conversion failed when converting the nvarchar value to data type int при подсчете записей
Пытаюсь подсчитать кол-во записей в таблице которые имеют введенный Логин, но встречаю эту ошибку:...

Ошибка компиляции: "[Error] converting to execution character set: Illegal byte sequence"
Всем привет, помогите исправить ошибку При компиляции выдает ошибку " converting to execution...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru