С# Письмо, увеличивающее число номеров в базе данных

-4

Я пытаюсь написать "Увеличение числа/цена" в режиме "Пока" с увеличением в моей базе данных, но все еще не работает...

Без какого-либо времени/приращения мой другой код работает очень хорошо, и я получаю данные в моей базе данных, но с "while code" not... может ли кто-нибудь помочь мне? спасибо вы

namespace Testing
{
class Program
{
static void Main(string[] args)
{
SqlConnection con;
string str;
string Buyable;
Buyable = "0";
int count = 10;
double Add = 0.00000000;

for (int i = 0; i < count; i++)
{
Add = Add + 0.00000005;
try
{
str = @"..........";
con = new SqlConnection(str);
con.Open();
Console.WriteLine("Database connected");
string query = "INSERT INTO[dbo].[Table]([Price], [Buyable]) VALUES('" + Add + "'," + Buyable + ")";
SqlCommand ins = new SqlCommand(query, con);
ins.ExecuteNonQuery();
Console.WriteLine("Stored");
Console.ReadKey();
}
catch (SqlException)
{
}
}
}
}
}

спросил(а) 2021-01-19T14:25:23+03:00 2 месяца, 3 недели назад
1
Решение
75

Попробуй это:

static void Main(string[] args)
{
double Add = 0D; //You really should use a **decimal** for anything to do with money!
int Buyable = 0;
int count = 10;

string str = @"..........";
string sql = "INSERT INTO[dbo].[Table]([Price], [Buyable]) VALUES(@Add, @Buyable);"; // + Add + "'," + Buyable + ")";

using (SqlConnection con = new SqlConnection(str))
using (SqlCommand ins = new SqlCommand(sql, con))
{
ins.Parameters.Add("@Add", SqlDbType.Float);
ins.Parameters.Add("@Buyable", SqlDbType.Int); //guessing at parameter type here
con.Open();
Console.WriteLine("Database connected");

for (int i = 0; i < count; i++)
{
Add += 0.00000005D;
try
{
ins.Parameters["@Add"].Value = Add;
ins.Parameters["@Buyable"].Value = Buyable;
ins.ExecuteNonQuery();

Console.WriteLine("Stored");
Console.ReadKey();
}
catch (SqlException ex)
{
//Do *something* with the exception here!
Console.WriteLine("Error using the database. The message is:\n{0}", ex.Message);
}
}
}
}

ответил(а) 2021-01-19T14:25:23+03:00 2 месяца, 3 недели назад
62

Не оставляйте открытым соединение и попытаться использовать с using всех disposable объектов в С# жизни.

    str = @"..........";
using(con = new SqlConnection(str))
{
con.Open();
Console.WriteLine("Database connected");
string query = "INSERT INTO[dbo].[Table]([Price], [Buyable]) VALUES('" + Add + "'," + Buyable + ")";
SqlCommand ins = new SqlCommand(query, con);
ins.ExecuteNonQuery();
Console.WriteLine("Stored");
Console.ReadKey();
}

ответил(а) 2021-01-19T14:25:23+03:00 2 месяца, 3 недели назад
44

Здесь вы пишете con.Open(); в цикле без закрытия предыдущего соединения con.Close(); которые вызывают ошибку, пишите con.Close(); после ins.ExecuteNonQuery(); и попробовать.

Другое решение. Откройте свое соединение перед циклом и закройте после завершения цикла. Я думаю, это может помочь вам

ответил(а) 2021-01-19T14:25:23+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема