输入的字符串格式不正确-插入数据库

时间:2019-06-11 17:55:56

标签: c#

当我引入nume(表示姓氏)和prenume(表示姓氏)时,出现错误。奇怪的是,当name和prenume具有int值时,该程序将起作用。请帮助我

float medie = (float) Suma / numar_materii;
SQLiteConnection connection = new SQLiteConnection(LoadConnectionString());
connection.Open();
const string sql = @"INSERT INTO Users (Nume,Prenume,Medie) VALUES (@Nume ,@Prenume,@Medie)";
SQLiteCommand command = new SQLiteCommand(sql, connection);
command.Parameters.Add(new SQLiteParameter("@Nume", SqlDbType.NVarChar) { Value = namee.Text }) ;
command.Parameters.Add(new SQLiteParameter("@Prenume", SqlDbType.NVarChar) { Value = Prenume.Text});
command.Parameters.Add(new SQLiteParameter("@Medie", SqlDbType.Real) { Value = medie });
command.ExecuteNonQuery();

executenonquery后输入字符串格式不正确

1 个答案:

答案 0 :(得分:0)

问题是SQLiteCommand没有以SqlDbType作为参数的构造函数。因此,选择了构造函数SQLiteParameter(string parameterName, object value)

SqlDbType.NVarChar转换为相应的Int32值(在这种情况下为12),并且参数的DbType自动解析为Int32.DbType,因为C#中的Enums只是命名常数的集合。

在初始化程序中,您使用类型为string的值来更改参数的值,SQLite无法将新值转换为Int32并抛出FormatException

您可以使用DbType代替SqlDbType

解决问题
command.Parameters.Add(new SQLiteParameter("@Nume", DbType.String) { Value = namee.Text });
command.Parameters.Add(new SQLiteParameter("@Prenume", DbType.String) { Value = Prenume.Text });
command.Parameters.Add(new SQLiteParameter("@Medie", DbType.Double) { Value = medie });

或通过让SQLiteParameter为您选择正确的DbType

command.Parameters.Add(new SQLiteParameter("@Nume", namee.Text));
command.Parameters.Add(new SQLiteParameter("@Prenume", Prenume.Text));
command.Parameters.Add(new SQLiteParameter("@Medie", medie));