Linq ExecuteCommand не понимает, аннулирует

Плагин Shade намного проще в использовании:

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.0.0</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer
                                        implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <manifestEntries>
                                        <Main-Class>main.Main</Main-Class>
                                    </manifestEntries>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>
22
задан Samuel Carrijo 13 May 2009 в 19:37
поделиться

4 ответа

Это известная ошибка, и Microsoft не собирается ее исправлять ...

https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=305114&wa = wsignin1.0

Чтобы решить эту проблему, выполните следующие действия:

  1. Перейдите в ADO.NET и выполните команду SQL напрямую
  2. Отформатируйте строку, которую вы выполняете самостоятельно, и вызовите ExecuteCommand с пустым массивом объектов (новый объект [0])

Второй вариант - не очень хорошая идея, поскольку он открывает возможности для атак SQL-инъекций, но это быстрый взлом.

19
ответ дан 29 November 2019 в 05:53
поделиться

пробовали ли вы присвоить значение тем, которые имеют значение NULL? Значение (псевдо):

Если адрес равен нулю, то address = "" или Если age <0, тогда age = 0

, затем добавьте его в myList

или вы всегда можете использовать тернарный оператор:

name = name.Length < 1 ? "" : name;
age = age < 1 ? Int32.MinValue : age;

, а затем добавить его в myList

0
ответ дан 29 November 2019 в 05:53
поделиться

В .NET строка с нулевым значением или пустым значением не оценивается как пустая строка, то есть "". Если вы хотите "", тогда это должно быть значение строки, или если вы хотите представить null / ничего в SQL, вам нужно вручную выписать "NULL", если ваша .NET-строка на самом деле пустая / пустая.

Все, что делает команда execute, это выполнение предоставленного вами запроса SQL в виде строки. он не делает ничего особенного в отношении этой строки SQL.

Итак,

-6
ответ дан 29 November 2019 в 05:53
поделиться

почему бы не использовать значения, допускающие значение NULL?

public void InsertCostumer(string? name, int? age, string? address)
{
    List<object> myList = new List<object>();

    myList.Add(name.GetValueOrDefault());
    myList.Add(age.GetValueOrDefault());
    myList.Add(address.GetValueOrDefault());

    StringBuilder queryInsert = new StringBuilder();
    queryInsert.Append("insert into Customers(name, address) values ({0}, {1}, {2})");

    this.myDataContext.ExecuteCommand(queryInsert.ToString(), myList.ToArray());
}
-1
ответ дан 29 November 2019 в 05:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: