DataSourceID和DataSource与控件属性有什么区别?我可以互换使用吗?
当我尝试DataSource在设计时设置属性时,通过在aspx页面上键入它,我得到一个异常,上面写着"'DataSource'属性不能以声明方式设置." 但是当我使用属性窗口来改变它时DataSource,它没有例外.
我试图弄清楚我的Spring应用程序如何确定它的部署位置并加载适当的数据源.我们有3个环境......我的本地,开发服务器和生产服务器.到目前为止,我有3个属性文件调用
localhost.datasource.properties
development.datasource.properties
production.datasource.properties
Run Code Online (Sandbox Code Playgroud)
我让他们像这样:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:/resources/properties/production.datasource.properties</value>
<value>classpath:/resources/properties/development.datasource.properties</value>
<value>classpath:/resources/properties/localhost.datasource.properties</value>
</list>
</property>
</bean>
<bean id="dataSourceMySQL" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
p:driverClassName="${mysql.jdbc.driver.class.name}"
p:url="${mysql.jdbc.url}"
p:username="${mysql.jdbc.username}"
p:password="${mysql.jdbc.password}" />
</beans>
Run Code Online (Sandbox Code Playgroud)
当我在我的localhost机器上时,这很好用.如果我将war文件部署到开发中,它仍然在读取localhost属性,因为它是列表中的最后一个,我收到错误.实现这个的最佳方法是什么?
谢谢
我有一个列表集合如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace FileExplorer.Classes
{
public class NewAddedFiles
{
public string FileName;
public string FilePath;
public DateTime FileCreationDate;
}
}
Run Code Online (Sandbox Code Playgroud)
private void GetFilesFromDirectory(string PhysicalPath)
{
DirectoryInfo Dir = new DirectoryInfo(PhysicalPath);
FileInfo[] FileList = Dir.GetFiles("*.*", SearchOption.AllDirectories);
List<NewAddedFiles> list = new List<NewAddedFiles>();
NewAddedFiles NewAddedFile = new NewAddedFiles();
foreach (FileInfo FI in FileList)
{
//Response.Write(FI.FullName);
//Response.Write("<br />");
string AbsoluteFilePath = FI.FullName;
string RelativeFilePath = "~//" + AbsoluteFilePath.Replace(Request.ServerVariables["APPL_PHYSICAL_PATH"], String.Empty);
NewAddedFile.FileName = FI.Name;
NewAddedFile.FilePath = RelativeFilePath;
NewAddedFile.FileCreationDate = …Run Code Online (Sandbox Code Playgroud) List<Customer> _customers = getCustomers().ToList();
BindingSource bsCustomers = new BindingSource();
bsCustomers.DataSource = _customers;
comboBox.DataSource = bsCustomers.DataSource;
comboBox.DisplayMember = "name";
comboBox.ValueMember = "id";
Run Code Online (Sandbox Code Playgroud)
现在,如何将组合框的项目设置为列表中第一个以外的其他项目?尝试过comboBox.SelectedItem = someCustomer; ...还有很多其他东西,但到目前为止没有运气......
我正在使用Grails应用程序,我必须访问几个数据源.数据源在默认数据库中定义(即它们存储在那里,我必须调用默认数据库来检索我必须准备连接的数据源名称列表).当服务器启动时,我检索数据库列表,创建数据源bean并注入它们.所有动态添加的数据库在结构上都是相同的(即具有相同的表和域对象结构).
这个问题是我最接近一段有用的代码,但它并不是我需要的.
这是我添加它们的方式:
// Register datasource bean
def beanName = 'dataSource_devDB1'
BeanBuilder bb = new BeanBuilder()
bb.beans {
"${beanName}"(BasicDataSource) {
url = "jdbc:h2:devDB1Db;MVCC=TRUE"
pooled = true
driverClassName = "org.h2.Driver"
username = "sa"
password = ""
}
}
bb.registerBeans(grailsApplication.mainContext)
// check that it registered
def ctx = grailsApplication.mainContext
def ctxlist = ctx2.beanDefinitionNames.findAll{it.contains( 'dataSource' )}
log.info "ctxlist = " + ctxlist
Run Code Online (Sandbox Code Playgroud)
这打印:
[dataSource, dataSourceUnproxied, dataSource_devDB1]
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我可以对默认数据源执行操作,就是这样.
Datasource.groovy文件的一部分,那么我可以在所有数据库上执行操作,但不能像文档中所宣传的那样如果我在域对象上执行静态映射,它可以工作:
static mapping = {datasources(['devDB1', 'devDB2', 'DEFAULT')] or …Run Code Online (Sandbox Code Playgroud) 我开始介绍野生蝇学习.我已经下载了服务器的分发版.
现在我正在尝试配置数据源,但我看到以下错误:
Unexpected HTTP response: 500
Request
{
"address" => [
("subsystem" => "datasources"),
("data-source" => "PostgreDataSource")
],
"operation" => "test-connection-in-pool"
}
Response
Internal Server Error
{
"outcome" => "failed",
"failure-description" => "WFLYJCA0040: failed to invoke operation: WFLYJCA0042: failed to match pool. Check JndiName: java:jboss/datasources/PostgreDataSource",
"rolled-back" => true
}
Run Code Online (Sandbox Code Playgroud)
我的步骤:
1 .从那里创建文件夹wildfly-10.0.0.CR2\wildfly-10.0.0.CR2\modules\org\postgres\main和副本.postgresql-9.0-801.jdbc4.jar\.m2\repository\postgresql\postgresql\9.0-801.jdbc4
2.Created module.xml(内部wildfly-10.0.0.CR2\wildfly-10.0.0.CR2\modules):
以下内容:
<module xmlns="urn:jboss:module:1.0" name="org.postgres">
<resources>
<resource-root path="postgresql-9.0-801.jdbc4.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
Run Code Online (Sandbox Code Playgroud)
standalone.xml(wildfly-10.0.0.CR2\wildfly-10.0.0.CR2\standalone\configuration)(对不起 …我想通过实现db数据init DataSourceInitializer.
我把这些作为方法就在我的Spring Boot主方法之下,但它似乎根本没有执行(我试图故意删除字符只是为了触发一个错误,这将确认执行.没有发生任何事情.):
@ConfigurationProperties(prefix="spring.datasource")
@Bean
public DataSource getDataSource() {
// i was hoping this was going to pull my current datasource, as
// defined in application.properties
return DataSourceBuilder
.create()
.build();
}
@Bean
public DataSourceInitializer dataSourceInitializer() {
ResourceDatabasePopulator resourceDatabasePopulator = new ResourceDatabasePopulator();
resourceDatabasePopulator.addScript(new ClassPathResource("/data/init/initData.sql"));
DataSourceInitializer dataSourceInitializer = new DataSourceInitializer();
// the call to the above method
dataSourceInitializer.setDataSource(getDataSource());
dataSourceInitializer.setDatabasePopulator(resourceDatabasePopulator);
return dataSourceInitializer;
}
Run Code Online (Sandbox Code Playgroud)
更新:此问题旨在获取对正在使用的dataSource的引用.这个问题解释了如何以一种非常简单的方式初始化数据: DataSourceInitializer不能在Spring boot 1.2上运行
我想看看在Spring中使用一个DataSources的最佳方法是什么,但能够从Java代码中切换数据库?下面是我的两个DataSource,它们转到相同的数据库服务器但是不同的数据库.
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.sybase.jdbc3.jdbc.SybDataSource" />
<property name="url"
value="jdbc:sybase:Tds:10.20.30.40:50/DATABASE_EMS" />
<property name="username" value="userid" />
<property name="password" value="derp" />
</bean>
<bean id="dataSourceMain" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.sybase.jdbc3.jdbc.SybDataSource" />
<property name="url"
value="jdbc:sybase:Tds:10.20.30.40:50/DATABASE" />
<property name="username" value="userid" />
<property name="password" value="derp" />
</bean>
Run Code Online (Sandbox Code Playgroud)
我将它们绑定到各自的bean但是我正在查看我的遗留代码,并且使用2个单独的bean实现它将非常尴尬.有关如何在需要时使用一个DataSource和切换数据库的想法/想法吗?
当我收到了Connection从DataSource,我应该手动关闭它?我的意思是,如果我必须关闭它,它将如何在未来的请求中使用?
datasource ×10
java ×5
c# ×3
spring ×3
asp.net ×2
jdbc ×2
ado ×1
collections ×1
combobox ×1
grails ×1
mysql ×1
postgresql ×1
repeater ×1
selecteditem ×1
spring-boot ×1
wildfly ×1
xml ×1