① ORM是否必要
ORM可以防止注入作为附加功能,sql也可以带来反注入机制。ORM的主要作用是将数据库域的对象映射到面向对象的域中,因为开发人员更熟悉它们。
开发人员在开发时更倾向于用对象的方式思考
通过ORM,抽象被构造并输入到应用程序代码中,这样就可以在代码中直接实现许多必要的约束,这有助于正确性。② Java中的at com.jfinal.plugin.activerecord.Db.query错误,怎么解决呀!
楼主,,,,,图片中,第1行就告诉了你错误的原因,,,,,第3行是你自己的代码中的错误的行。
③ Ralis连接远程数据库,提示ActiveRecord::ConnectionNotEstablished ,本地pl/sql可以访问远程数据库
你是局域网内可以远程连接,广域网使用外网ip不可以连接吗?
路由器上要映射ip地址和数据库端口
④ 初学ruby on rails,ActiveRecord::StatementInvalid in UsersController#show 不能生成正确的sql语句
从你给的信息看不出任何问题,需要你贴出数据库的配置,以及model的定义
⑤ Yii的ActiveRecord是自动产生SQL语句吗
不太理解你想问什么。通常框架中的数据库操作都是DB对象负责的,也就是通常来说其它对象只会创建一个能用来产生SQL语句的结构体,然后DB对象会分析这个结构体然后转换为sql并执行。
至于Yii的ActiveRecord,你可以理解为是将数据库表中的记录对象化了。即每个ActiveRecord实例对应了指定的数据表中的特定行(包括新建的行),它封装了save, delete方法,但是具体的save,delete操作还是转交给db对象实际完成的。
⑥ pgSql里运行sql语句没错,但在JFinal报错
PostgreSQL的PL/pgSQL语言是支持动态SQL语句的(说execute immediate的是ECPG所支持的)。但是,要记得重要的一点: 是在PL/pgSQL语言中支持。而PL/pgSQL语言一个块结构的语言,它以begin ... end为块的开始与结束标识。这也就是说,要执行动态SQL语句,就必须放到begin ... end块中,而不要想实现一个单独的动态SQL语句。在SQL Server中,倒是可以轻松的实现,我们可以直接执行一个这样的动态SQL:
1execute sp_executesql N'select 1 as val'
而在PostgreSQL中,就不要有此想法了。当然,SQL Server的这种动态SQL语句的执行方法也有其局限与不便的地方。
在PL/pgSQL中,执行动态SQL的格式如下(摘录自说明文档):
1EXECUTE command-string [ INTO [STRICT] target ] [ USING expression [, ... ] ];
其中,
command-string就是要执行的动态SQL语句(一定要记住:这里是SQL语句,不是PL/pgSQL语句,像raise notice就不能使用);
INTO子句是把SQL查询到的值赋给INTO指定的变量;
USING子句是前面的command-string中替代变量($1, $2, ...)的赋值;
示例:
123456789do $$declarev_c1 integer;v_c2 integer;beginexecute 'select count(*) as c1, count(*) as c2 from (select 1 as idx union select 11 as idx union select 21 as idx) s where idx > $1' into v_c1, v_c2using 10;raise notice '%, %', v_c1, v_c2;
⑦ jFinal怎样连接sqlserver
1.修改配置文件
jdbc.url= jdbc:sqlserver://localhost;databaseName=jfinal_demo
jdbc.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc.user=sa
jdbc.pwd=123456
devMode = true
2.配置插件
publicvoidconfigPlugin(Pluginsme){
//配置C3p0数据库连接池插件
C3p0Pluginc3p0Plugin=newC3p0Plugin(getProperty("jdbc.url"),getProperty("jdbc.user"),getProperty("jdbc.pwd").trim(),getProperty("jdbc.driver"));
me.add(c3p0Plugin);
//配置ActiveRecord插件
ActiveRecordPluginarp=newActiveRecordPlugin(c3p0Plugin);
arp.setDialect(newAnsiSqlDialect());
me.add(arp);
arp.addMapping("blog",Blog.class);
}
⑧ yii2 yii\db\ActiveRecord find() 和 findBySql()返回结果不同
Customer::findBySql('SELECT * FROM customer')->all()->count();
试试这个
⑨ activerecord 中如何将视图映射为类
(1)需要引用的程序集:
Castle.ActiveRecord.dll
Castle.Model.dll
Nullables.dll
NHibernate.dll
Castle.DynamicProxy.dll (Curious? Check DynamicProxy)
Nullables.NHibernate.dll
log4net.dll
Iesi.Collections.dll
(2)一个简单的控制台工程
(3)数据库
CREATE TABLE Blogs (
blog_id int IDENTITY(1, 1) PRIMARY KEY,
blog_name varchar(50),
blog_author varchar(50))
CREATE TABLE Posts (
post_id int IDENTITY(1, 1) PRIMARY KEY,
post_title varchar(50),
post_contents text,
post_category varchar(50),
post_blogid int FOREIGN KEY REFERENCES Blogs (blog_id),
post_created datetime,
post_published bit
)
2、编写Blog 类
首先让我们编写一个继承于ActiveRecordBase的类Blog 。
public class Blog : ActiveRecordBase
{
}
接下来你必须使用ActiveRecordAttribute来让Blog 类知道对应数据库的哪个表。注意这件事情,类的名称是Blog ,而数据表的名称是Blogs,如果这两者相同,这个地方可以不特别指定类对应的数据表。
[ActiveRecord("Blogs")]
public class Blog : ActiveRecordBase
{
}
接下来让我们为类添加属性并指定主键吧:
[ActiveRecord("Blogs")]
public class Blog : ActiveRecordBase
{
private int _id;
[PrimaryKey(PrimaryKeyType.Native, "blog_id")]
public int Id
{
get { return _id; }
set { _id = value; }
}
}
在这个例子中,主键需要对应到数据表中的blog_id字段。与上面相同,如果数据表中主键名称和属性名称相同的话,这个地方也不需要特别指定对应关系,这会使事情更加简单,例如,如果主键的字段名称也是Id,下面这样就可以了:
[PrimaryKey]
public int Id
{
get { return _id; }
set { _id = value; }
}
最后让我们来看完成映射关系的类:
using System;
using System.Collections.Generic;
using System.Text;
using Castle.ActiveRecord;
namespace ActiveRecord
{
[ActiveRecord("Blogs")]
public class Blog : ActiveRecordBase
{
private int _id;
private String _name;
private String _author;
[PrimaryKey(PrimaryKeyType.Identity, "blog_id")]
public int Id
{
get { return _id; }
set { _id = value; }
}
[Property("blog_name")]
public String Name
{
get { return _name; }
set { _name = value; }
}
[Property("blog_author")]
public String Author
{
get { return _author; }
set { _author = value; }
}
/**//// <summary>
/// 删除所有
/// </summary>
public static void DeleteAll()
{
DeleteAll( typeof(Blog) );
}
/**//// <summary>
/// 查询所有
/// </summary>
/// <returns></returns>
public static Blog[] FindAll()
{
return (Blog[])FindAll(typeof(Blog));
}
/**//// <summary>
/// 根据Id查询
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public static Blog Find(int id)
{
return (Blog)FindByPrimaryKey(typeof(Blog), id);
}
}
}
我们把类映射到了数据表、字段和主键,代码非常直白。在开始测试之前,我们还必须提供一些配置信息,这些信息包含了数据库联接的一些设置,我们可以使用AppDomain Config文件来保存这些信息,也可以使用硬编码的方式:
<code>
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="activerecord"
type="Castle.ActiveRecord.Framework.Config.ActiveRecordSectionHandler, Castle.ActiveRecord"/>
</configSections>
<activerecord>
<config>
<add key="hibernate.connection.driver_class" value="NHibernate.Driver.SqlClientDriver" />
<add key="hibernate.dialect" value="NHibernate.Dialect.MsSql2000Dialect" />
<add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider" />
<add key="hibernate.connection.connection_string" value="UID=sa;Password=yourpass;Initial Catalog=test;Data Source=." />
</config>
</activerecord>
</configuration>
</code>
或者:
InPlaceConfigurationSource source = new InPlaceConfigurationSource();
Hashtable properties = new Hashtable();
properties.Add("hibernate.connection.driver_class", "NHibernate.Driver.SqlClientDriver");
properties.Add("hibernate.dialect", "NHibernate.Dialect.MsSql2000Dialect");
properties.Add("hibernate.connection.provider", "NHibernate.Connection.DriverConnectionProvider");
properties.Add("hibernate.connection.connection_string", "UID=sa;Password=;Initial Catalog=test;Data Source=.");
source.Add(typeof(ActiveRecordBase), properties);
ActiveRecordStarter.Initialize(source, typeof(Blog));
在这个例子中,我们可以象下面这样初始化:
IConfigurationSource source = System.Configuration.ConfigurationSettings.GetConfig("activerecord") as IConfigurationSource;
ActiveRecordStarter.Initialize(source, typeof(Blog));
现在你能够象下面这样运行程序了:
//删除所有
Blog.DeleteAll();
//添加
Blog blog = new Blog();
blog.Name = "ttinfo";
blog.Author="ttinfo2";
blog.Save(); // or blog.Create();
//按照id查询
Int id=1;
Blog blog= Blog.Find(id);
……
⑩ ruby activerecord有连接池吗
ORM 与抽象渗漏法则
ORM (Object-relationalmapping ) 是一种对映设关系型数据与对象数据的程序技术。面向对象和从数学理论发展出来的关系数据库,有着显着的区别,而 ORM 正是解决这个不匹配问题所产生的工具。它可以让你使用面向对象语法来操作关系数据库,非常容易使用、撰码十分有效率,不需要撰写繁琐的SQL语法,同时也增加了程序代码维护性。
不过,有些熟悉 SQL 语法的程序设计师反对使用这样的机制,因为直接撰写 SQL 可以确保操作数据库的执行效率,毕竟有些时候 ORM 产生出来的 SQL效率不是最佳解,而你却不一定有经验能够意识到什么时候需要担心或处理这个问题。