sql语句与跨编程语言吗?
不好意思,多打入一个“与”。我的意思是:sql语句可以在任何编程语言中运行,而不会报错,是为什么??...
不好意思,多打入一个“与”。
我的意思是:sql语句可以在任何编程语言中运行,而不会报错,是为什么?? 展开
我的意思是:sql语句可以在任何编程语言中运行,而不会报错,是为什么?? 展开
展开全部
不用担心,一般正确的sql语句可以在各种标准化的数据库中执行,比如oracle、db2、MS Server、sybase、mysql、Postgres等。需要注意的是要实现某些功能,sql中使用了函数,这些函数是本地化(也就是各个数据库有自己的规则)的,这时就需要针对具体数据库选用不用的函数和参数。比如Postgres的时间转化成字符串函数to_char(timestamp, text),timestamp为从数据库中查询到的时间字段,text为要转化的字符串格式。如果你想将时间转换为“2008-11-27”形式,那么test设置成YYYY-MM-DD即可。怎么判断应用程序用的哪种数据库呢?这个可以通过会话中的链接(connection)获取,以java为例,请看下列示例代码。
Connection conn=session.connection();
……
/**
* 使用一个连接来获取数据库的头信息。
*
* @param conn
*/
public DataBaseInfo(Connection conn) {
DatabaseMetaData dbmd = null;
try {
dbmd = conn.getMetaData();
databaseUrl = dbmd.getURL();
databaseUsername = dbmd.getUserName();
databaseProductName = dbmd.getDatabaseProductName();
databaseProductVersion = dbmd.getDatabaseProductVersion();
driverName = dbmd.getDriverName();
driverVersion = dbmd.getDriverVersion();
String databaseName = databaseProductName.toLowerCase();
if (databaseName == null) {
databaseType = DATABASE_UNKNOWN;
} else if (databaseName.indexOf("oracle") != -1) {
databaseType = DATABASE_ORACLE;
} else if (databaseName.indexOf("postgresql") != -1) {
databaseType = DATABASE_POSTGRESQL;
} else if (databaseName.toLowerCase().indexOf("db2") != -1) {
databaseType = DATABASE_DB2;
} else if (databaseName.indexOf("sql server") != -1) {
databaseType = DATABASE_SQLSERVER;
} else if (databaseName.indexOf("mysql") != -1) { // "MySQL"
databaseType = DATABASE_MYSQL;
} else if (databaseName.indexOf("hsql") != -1) {
databaseType = DATABASE_HSQLDB;
} else if (databaseName.indexOf("sap") != -1) { // "SAP DB"
databaseType = DATABASE_SAPDB;
} else if (databaseName.indexOf("firebird") != -1) { // "firebird"
databaseType = DATABASE_FIREBIRD;
} else if (databaseName.indexOf("adaptive") != -1) { // "DATABASE_SYBASE"
databaseType = DATABASE_SYBASE;
} else {
databaseType = DATABASE_UNKNOWN;
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
这样就识别程序用的哪种数据库了。
Connection conn=session.connection();
……
/**
* 使用一个连接来获取数据库的头信息。
*
* @param conn
*/
public DataBaseInfo(Connection conn) {
DatabaseMetaData dbmd = null;
try {
dbmd = conn.getMetaData();
databaseUrl = dbmd.getURL();
databaseUsername = dbmd.getUserName();
databaseProductName = dbmd.getDatabaseProductName();
databaseProductVersion = dbmd.getDatabaseProductVersion();
driverName = dbmd.getDriverName();
driverVersion = dbmd.getDriverVersion();
String databaseName = databaseProductName.toLowerCase();
if (databaseName == null) {
databaseType = DATABASE_UNKNOWN;
} else if (databaseName.indexOf("oracle") != -1) {
databaseType = DATABASE_ORACLE;
} else if (databaseName.indexOf("postgresql") != -1) {
databaseType = DATABASE_POSTGRESQL;
} else if (databaseName.toLowerCase().indexOf("db2") != -1) {
databaseType = DATABASE_DB2;
} else if (databaseName.indexOf("sql server") != -1) {
databaseType = DATABASE_SQLSERVER;
} else if (databaseName.indexOf("mysql") != -1) { // "MySQL"
databaseType = DATABASE_MYSQL;
} else if (databaseName.indexOf("hsql") != -1) {
databaseType = DATABASE_HSQLDB;
} else if (databaseName.indexOf("sap") != -1) { // "SAP DB"
databaseType = DATABASE_SAPDB;
} else if (databaseName.indexOf("firebird") != -1) { // "firebird"
databaseType = DATABASE_FIREBIRD;
} else if (databaseName.indexOf("adaptive") != -1) { // "DATABASE_SYBASE"
databaseType = DATABASE_SYBASE;
} else {
databaseType = DATABASE_UNKNOWN;
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
这样就识别程序用的哪种数据库了。
展开全部
sql就是标准化查询语言,当然跨平台。
只是各版本有细微差别
只是各版本有细微差别
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sql语句可以在任何编程语言中运行,而不会报错?如果不报错,是为什么??
那是因为SQL 给众多编程语言足够的面子!当然前提是你不要写错语句,呵呵!
那是因为SQL 给众多编程语言足够的面子!当然前提是你不要写错语句,呵呵!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询