Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有C#参数化字符串插入的SQLite将存储为数字_C#_Sqlite - Fatal编程技术网

带有C#参数化字符串插入的SQLite将存储为数字

带有C#参数化字符串插入的SQLite将存储为数字,c#,sqlite,C#,Sqlite,此命令导致数据库中出现错误。如果我插入一组数据,它会将text2值转换为double,而不仅仅是值为“123”的文本 如何在sqllite驱动程序中禁用自动转换 表定义: using (SQLiteCommand cmd = ctx.DB.Query("INSERT INTO tableName(Text1, Text2) VALUES (@text1, @text2)")) { cmd.Prepare(); cmd.Parameters.AddWithValue("@t

此命令导致数据库中出现错误。如果我插入一组数据,它会将text2值转换为double,而不仅仅是值为“123”的文本

如何在sqllite驱动程序中禁用自动转换

表定义:

using (SQLiteCommand cmd = ctx.DB.Query("INSERT INTO tableName(Text1, Text2) VALUES (@text1, @text2)"))
{
      cmd.Prepare();
      cmd.Parameters.AddWithValue("@text1","abc");
      cmd.Parameters.AddWithValue("@text2", "123");
      cmd.ExecuteNonQuery();
}
编辑:

结果导致异常:

例外情况是:

    cmd.Parameters.AddWithValue("@text1", SqlDbType.Text).Value = "abc";
    cmd.Parameters.AddWithValue("@text2", SqlDbType.Text).Value = "123";
    cmd.ExecuteNonQuery();

感谢@DourHighArch的提示

显示表定义。我不知道这是否是SQLite的问题,但在SQL Server中将数字字符串更改为
INT
s。您应该改为使用
cmd.Parameters.Add(“@Parameter”,SqlDbType.Foo,…).Value=…
@DourHighArch已经测试过了。导致异常使用本机sql插入代码写入它会导致有效的插入您仍在使用
.AddWithValue
,请使用
.Add
。从堆栈跟踪来看,SQLite似乎也在执行text->INT操作。
    cmd.Parameters.AddWithValue("@text1", SqlDbType.Text).Value = "abc";
    cmd.Parameters.AddWithValue("@text2", SqlDbType.Text).Value = "123";
    cmd.ExecuteNonQuery();
Conversion Exception wrong format
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
   at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
   at System.String.System.IConvertible.ToInt32(IFormatProvider provider)
   at System.Convert.ToInt32(Object value, IFormatProvider provider)
   at System.Data.SQLite.SQLiteStatement.BindParameter(Int32 index, SQLiteParameter param) in c:\dev\sqlite\dotnet\System.Data.SQLite\SQLiteStatement.cs:Line 481.
   at System.Data.SQLite.SQLiteStatement.BindParameters() in c:\dev\sqlite\dotnet\System.Data.SQLite\SQLiteStatement.cs:Line 237.
   at System.Data.SQLite.SQLiteCommand.BuildNextCommand() in c:\dev\sqlite\dotnet\System.Data.SQLite\SQLiteCommand.cs:Line 388.
   at System.Data.SQLite.SQLiteCommand.GetStatement(Int32 index) in c:\dev\sqlite\dotnet\System.Data.SQLite\SQLiteCommand.cs:Line 395.
   at System.Data.SQLite.SQLiteDataReader.NextResult() in c:\dev\sqlite\dotnet\System.Data.SQLite\SQLiteDataReader.cs:Line 1864.
   at System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave) in c:\dev\sqlite\dotnet\System.Data.SQLite\SQLiteDataReader.cs:Line 123.
   at System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior) in c:\dev\sqlite\dotnet\System.Data.SQLite\SQLiteCommand.cs:Line 942.
   at System.Data.SQLite.SQLiteCommand.ExecuteNonQuery(CommandBehavior behavior) in c:\dev\sqlite\dotnet\System.Data.SQLite\SQLiteCommand.cs:Line 990.
   at System.Data.SQLite.SQLiteCommand.ExecuteNonQuery() in c:\dev\sqlite\dotnet\System.Data.SQLite\SQLiteCommand.cs:Line 975.
using (SQLiteCommand cmd = ctx.DB.Query("INSERT INTO tableName(Text1, Text2) VALUES (@text1, @text2)"))
    {
          cmd.Prepare();
          cmd.Parameters.Add("@text1", DbType.AnsiString).Value = "abc";
          cmd.Parameters.Add("@text2", DbType.AnsiString).Value = "123";
          cmd.ExecuteNonQuery();
    }