标签: executequery

如何使用DataContext.ExecuteQuery返回的未知类型的对象

因此,随着C#4.0中动态关键字的出现,我希望我能找到一个更好的解决方案来处理DataContext.ExecuteQuery选择任意列时返回的类型的问题.

在过去,我创建了一个新类型来保存此类查询的结果,或者使用此SO帖子中描述的方法.因此,既然我能够处理在.NET 4.0下运行的新项目,我就会研究使用动态类型以一种不太痛苦的方式完成同样的事情.

所以,我给了这个镜头:

var result = _db.ExecuteQuery<dynamic>( "SELECT CustomerID,City FROM Customers", new object[0] );
foreach( var d in result )
{
    MessageBox.Show( String.Format( "{0}, {1}", d.CustomerID, d.City ) );        
}
Run Code Online (Sandbox Code Playgroud)

在运行时抛出异常,因为动态对象的属性CustomerID不存在.所以,由于我在这一点上对动态关键字的体验是零(文章/博客文章或两篇,没有真正的经验)我希望有人在这里可以告诉我,如果我想在这里做的甚至是可能的.我可能高估了ExecuteQuery背后的"魔法"数量,但我认为这可能是由于在幕后完成的属性映射.任何帮助深表感谢.

c# dynamic executequery linq-to-sql

4
推荐指数
1
解决办法
7967
查看次数

发生异常后,关闭连接似乎会提交事务,即使 AutoCommit 为 false

setAutoCommit为 false 并在关闭连接之前抛出异常,但仍然提交事务。这不是很奇怪的行为吗?

public static void insertEmployee(){

        String query1 = "INSERT INTO EMPLOYEE VALUES(80, 'from code')";
        String query2 = "INSERT INTO EMPLOYEE VALUES(81, 'from code')";
        Connection connection = null;
        Statement statement = null;
        try {
            connection =   DriverManager.getConnection(url, username, password);
            connection.setAutoCommit(false);
            statement = connection.createStatement();
            statement.executeUpdate(query1);
            ResultSet resultSet = statement.executeQuery(query2);
            while(resultSet.next()) //this code throws the exception kept like this intentionally
            {
                int empNo = resultSet.getInt("EMPLOYEE_ID");
                String eName = resultSet.getString("EMPLOYEE_NAME");
                System.out.println("eName = " + eName);
            }
        } catch (SQLException e) { …
Run Code Online (Sandbox Code Playgroud)

java jdbc autocommit executequery

3
推荐指数
1
解决办法
2119
查看次数

H2中通过PreparedStatement查询抛出异常:Prepared Statement不允许使用此方法;使用常规语句代替

使用 JDBC 4 访问Java 11 中的H2数据库时,通过预准备语句运行简单查询会失败。

\n\n

运行此行时:

\n\n
try ( ResultSet rs = pstmt.executeQuery( sql ) ; ) {\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xe2\x80\xa6我收到此错误:

\n\n
\n

org.h2.jdbc.JdbcSQLException:准备好的语句不允许使用此方法;请改用常规语句。[90130-197]

\n
\n\n

我尝试使用H2 Error Analyzer,但没有帮助。

\n\n

这是一个完整的示例应用程序,位于单个 .java 文件中。您可以复制粘贴并自行运行。

\n\n
package com.basilbourque.example.work.basil.example.h2.pstmt_query;\n\nimport org.h2.jdbcx.JdbcDataSource;\n\nimport java.sql.*;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.UUID;\n\npublic class App {\n    public static void main ( String[] args ) {\n        App app = new App();\n        app.doIt();\n    }\n\n    private void doIt ( ) {\n\n        // Create database.\n        try {\n            Class.forName( "org.h2.Driver" );\n        } catch …
Run Code Online (Sandbox Code Playgroud)

sql select exception h2 executequery

3
推荐指数
1
解决办法
5252
查看次数

如何在SQL选择期间通过LINQ数据上下文将INT32转换为INT?

我有以下声明:

someList = dc.ExecuteQuery<MyCustomType>(@"Select Id As ProductId, Name From ivProduct").ToList();
Run Code Online (Sandbox Code Playgroud)

当我的MyCustomType的Id属性为INT时,数据库中的Id存储为int32.有没有办法在选择期间将int32强制转换为int?

谢谢

c# linq casting executequery

1
推荐指数
1
解决办法
3818
查看次数

必须声明标量变量

我在存储过程中编写了这个SQL但没有工作,

declare @tableName varchar(max) = 'TblTest'
declare @col1Name varchar(max) = 'VALUE1'
declare @col2Name varchar(max) = 'VALUE2'
declare @value1 varchar(max)
declare @value2 varchar(200)

execute('Select TOP 1 @value1='+@col1Name+', @value2='+@col2Name+' From '+ @tableName +' Where ID = 61')

select @value1

execute('Select TOP 1 @value1=VALUE1, @value2=VALUE2 From TblTest Where ID = 61')
Run Code Online (Sandbox Code Playgroud)

此SQL抛出此错误:

必须声明标量变量"@ value1".

我正在动态生成SQL,我想在变量中获取值.我该怎么办?

t-sql sql-server stored-procedures executequery

1
推荐指数
2
解决办法
10万
查看次数

executeQuery运行时间是运行时间的六倍,而不是在TOAD中运行查询时

我继承了......好吧,我想我可以称之为#### Struts应用程序,我的任务是优化Levey-Jennings流程,检查我们的质量控制标准是否符合要求.

这个过程本身运行良好,但即使数据集较小,性能时间也一直存在巨大的增长.我测试了算法的每个部分之间的时间,发现大时间的猪是Java的executeQuery()方法.

最近我运行应用程序并将执行时间记录为10秒.executeQuery()自己花了六秒钟.很想知道问题是什么,我把查询带到TOAD并逐字运行 - 它只需要1秒钟就可以运行.

我运行了一个更大的数据集,在Levey-Jennings应用程序中运行了60秒 - 然而,在TOAD中,需要10秒.

这是查询的问题,还是使用executeQuery()通常是极端减速的前兆?

java oracle executequery struts-1

0
推荐指数
1
解决办法
1691
查看次数