精华内容
下载资源
问答
  • oracle服务软件里面装了三个数据库,三个数据库服务都启动了,在登录数据库的时候没有指定数据库名称,所以现在登录到哪个数据库里面自己都不知道。 这三个数据库里面都有test_user用户,且密码都一样,在各自...
    回复次数:9

    展开全文
  • dbvisualizer如何新建数据库

    千次阅读 2019-06-10 00:10:21
    点击 use wizard,填写使用的机器名称,这里的名称可以随便写,自己知道是啥就好 选择使用的数据库驱动,有mysql,oracle等等,选择后,点击NEXT, 在database Server,填写机器的IP地址,在Database Port...

    打开DB后,点击左上角的图标,就是这个

    点击 use wizard,填写使用的机器名称,这里的名称可以随便写,自己能知道是啥就好

    选择使用的数据库驱动,有mysql,oracle等等,选择后,点击NEXT,

    在database Server,填写机器的IP地址,在Database Port填写对应的IP地址端口号,在Database,填写数据库名字,

    后面的Database Userid跟Database Password,可就不能乱填写了,这里要填写对应的数据库机器的用户名跟对应的密码,跟前面的第一步不一样哦,后面就可以finish了

    完成后,可以尝试connect一下

     

     

    展开全文
  • 一个好用的数据库

    2008-05-14 08:36:06
    <br>四、总结 ODBC有很多用处,例如我们可以把很多信息按照一定的格式保存在文本中(因为在商业上用别人的数据库都是要买的),然后通过ODBC把这些文本文件映射成表,这些文件的目录就成为一个数据库,这些...
  • oracle数据库经典题目

    2011-02-17 15:05:20
    系统权限提供了在Oracle数据库系统范围内执行某种任务的操作能力,而对象权限则是一种赋予用户在指定的数据库对象(如表、视图、过程等) 16. Oralce数据库在进行物理备份有联机备份和脱机备份两种方式可供选择。 ...
  • USE tablename -- 要操作的数据库名 SELECT @LogicalFileName = 'tablename_log', -- 日志文件名 @MaxMinutes = 10, -- Limit on time allowed to wrap log. @NewSize = 1 -- 你想设定的日志文件的大小(M) Setup /...
  • 这是我自己在实际中遇到一个问题,原问题是这样,就是我有一个工具类 DbUtil,一看名称知道是和数据库相关,由于是工具类,所以里面方法都是static ,但是又需要有关 jdbc 配置,总部至于硬编码吧,...

    这是我自己在实际中遇到的一个问题,原问题是这样的,就是我有一个工具类 DbUtil,一看名称就知道是和数据库相关的,由于是工具类,所以里面的方法都是static的 ,但是又需要有关 jdbc 的 配置,总部至于硬编码吧,所以就想到了放在和当前类一个目录里,然后用getClass.getResourceAsStream 得到一个InputStream  再来初始化一个 Properties,用其load(InputStream) 来获得属性文件里有关jdbc的配置 ,这个时候才发现了问题,在 static中this不能用,那如何获得当前类的Class呢,在网上搜罗了一番, 没发现这个问题好的解决方案,但是却发现了另一个问题,就是如何在当前方法中获取当前方法名,这个,一听,似乎很不错哦,用过Log4j的朋友,应该知道Log4J是可以打印出来自己在哪个方法里的那行的,而且还可以知道当前类。停,到这应该是该停一下了,思考下,当前类名获取了,那么 Class.forName是做什么的,大脑里有点想法了吧,看网上介绍Log4J关于动态获取当前文件,类,方法,行号的原理,对JDK不同版本也不同了,下面就是Copy 的

    一、问题的引入
    我们在Java程序中使用日志功能(JDK Log或者Log4J)的时候,会发现Log系统会自动帮我们打印出丰富的信息,格式一般如下:

    [运行时间] [当前类名] [方法名] 

    INFO: [用户信息]

    具体例子如Tomcat启动信息:

    Jul 
    92004 11:22:41 AM org.apache.coyote.http11.Http11Protocol start 
    INFO: Starting Coyote HTTP
    /1.1 on port 8080

     

    看起来这毫无神奇之处,不就是打印了一条信息吗?但如果好奇心重一点,追寻后面的实现原理,会发现这确实很神奇。

    上面的Log信息的[当前类名] [方法名]部分 不是用户自己添加的,而是Log系统自动添加的。这意味着Log系统能够自动判断当前执行语句是哪个类的哪个方法。这是如何做到的?

    我们翻遍java.lang.reflection 
    package,幻想着找到一个Statement语句级别的Reflection类,通过这个Statement对象获得Method,然后通过这个Method获得declared Class。这不就获得对应的Class和Method信息了吗?这是一个不错的构想,但也只能是一个构想;因为没有这个Statement对象。

    再想一下。对了,Java不是有一个Thread类吗?Thread.currentThread()方法获取当前线程,我们能不能通过这个当前线程获取当前运行的Method和Class呢?很遗憾,如果你还在用JDK1.4或以下版本,那么找不到这样的方法。(JDK1.5的情况后面会讲)

    再想一下。对了,我们都有很深刻的印象,当系统抛出Exception的时候,总是打印出一串的信息,告诉我们Exception发生的位置,和一层一层的调用关系。我们也可以自己调用Exception的printStackTrace()方法来打印这些信息。这不就是当前线程运行栈的信息吗?找到了,就是它。

    Exception的printStackTrace()方法继承自Throwable,那么我们来看一下,JDK的Throwable的printStackTrace()方法是如何实现的。

    我们先来看JDK1.3的源代码,会发现Throwable.printStackTrace()方法调用了一个native printStackTrace0()方法。我们找不到任何线索,可以用在我们自己的Java代码中。

    那怎么办?Throwable.printStackTrace()的输出结果字符串里面不是包含了当前线程运行栈的所有信息吗?我们可以从这个字符串中抽取自己需要的信息。JDK1.3的时代,也只能这么做了。

    二、Log4J 
    1.2的相关实现
    Log4J 
    1.2是JDK1.3时代的作品。我们来看相关源代码。

    [code]

      
    /**

         Instantiate location information based on a Throwable. We

         expect the Throwable t, to be in the format

           
            java.lang.Throwable

            ...

              at org.apache.log4j.PatternLayout.format(PatternLayout.java:413)

              at org.apache.log4j.FileAppender.doAppend(FileAppender.java:183)

            at org.apache.log4j.Category.callAppenders(Category.java:131)

            at org.apache.log4j.Category.log(Category.java:512)

            at callers.fully.qualified.className.methodName(FileName.java:74)

            ...

           

        
    */


      
    public LocationInfo(Throwable t, String fqnOfCallingClass) {

        String s;



          t.printStackTrace(pw);

          s 
    = sw.toString();

          sw.getBuffer().setLength(
    0);

      …. 
    // 这里的代码省略

      }


    [
    /code]

     

    这里我们可以看到整体的实现思路。

    首先,t.printStackTrace(pw); 获得stack trace字符串。这个t是 
    new Throwable()的结果。用户程序调用Log4J方法之后,Log4J自己又进行了4次调用,然后才获得了 t = new Throwable() :

              at org.apache.log4j.PatternLayout.format(PatternLayout.java:
    413)

              at org.apache.log4j.FileAppender.doAppend(FileAppender.java:
    183)

            at org.apache.log4j.Category.callAppenders(Category.java:
    131)

            at org.apache.log4j.Category.log(Category.java:
    512)

    那么,往下走4行,就可以回到用户程序本身的调用信息:

            at callers.fully.qualified.className.methodName(FileName.java:
    74)

    这一行里面,类名、方法名、文件名、行号等信息全有了。解析这一行,就可以获得需要的所有信息。

    三、JDK1.
    4 Log的相关实现
    Log4J大获成功,Sun决定在JDK1.4中引入这个Log功能。

    为了免去解析StackTrace字符串的麻烦,JDK1.4引入了一个新的类,StackTraceElement。

     

    public final class StackTraceElement implements java.io.Serializable {

        
    // Normally initialized by VM (public constructor added in 1.5)

        
    private String declaringClass;

        
    private String methodName;

        
    private String fileName;

        
    private int    lineNumber;

     

    可以看到,恰好包括类名、方法名、文件名、行号等信息。

    我们来看JDK1.
    4 Log的相关实现。

    LocationInfo.java 的infoCaller方法(推算调用者)

     

        
    // Private method to infer the callers class and method names

        
    private void inferCaller() {



                
    // Get the stack trace.

                StackTraceElement stack[] 
    = (new Throwable()).getStackTrace();

                
    // First, search back to a method in the Logger class.

    …. 
    // 这里的代码省略

                
    // Now search for the first frame before the "Logger" class.

                
    while (ix < stack.length) {

                    StackTraceElement frame 
    = stack[ix];

                    String cname 
    = frame.getClassName();

                    
    if (!cname.equals("java.util.logging.Logger")) 

                            
    // Weve found the relevant frame.

    … 
    // 这里的代码省略

                }


                
    // We haven     found a suitable frame, so just punt.  This is

            
    // OK as we are only committed to making a "best effort" here.

        }


     

    从注释中就可以看出实现思路。过程和Log4J异曲同工。只是免去了解析字符串的麻烦。

    四、Log4J 
    1.3 alpha的相关实现
    既然JDK1.4中引入了StackTraceElement类,Log4J也要与时俱进。LocationInfo类也有了相应的变化。

     

      
    /**

         Instantiate location information based on a Throwable. We

         expect the Throwable t, to be in the format

     

           
            java.lang.Throwable

            ...

              at org.apache.log4j.PatternLayout.format(PatternLayout.java:413)

              at org.apache.log4j.FileAppender.doAppend(FileAppender.java:183)

            at org.apache.log4j.Category.callAppenders(Category.java:131)

            at org.apache.log4j.Category.log(Category.java:512)

            at callers.fully.qualified.className.methodName(FileName.java:74)

            ...

           

     

           However, we can also deal with JIT compilers that "lose" the

           location information, especially between the parentheses.

     

        
    */


      
    public LocationInfo(Throwable t, String fqnOfInvokingClass) {

        
    if(PlatformInfo.hasStackTraceElement()) {

          StackTraceElementExtractor.extract(
    this, t, fqnOfInvokingClass);

        }
     else {

          LegacyExtractor.extract(
    this, t, fqnOfInvokingClass);  

        }


      }


     

    可以看到,Log4J首先判断Java平台是否支持StackTraceElement,如果是,那么用StackTraceElementExtractor,否则使用原来的LegacyExtractor。

    下面来看StackTraceElementExtractor.java

     

    /**

     * A faster extractor based on StackTraceElements introduced in JDK 1.4.

     *

     * The present code uses reflection. Thus, it should compile on all platforms.

     *

     * 
    @author Martin Schulz

     * 
    @author Ceki Gülcü

     *

     
    */


    public class StackTraceElementExtractor {

      
    protected static boolean haveStackTraceElement = false;

      
    private static Method getStackTrace = null;

      
    private static Method getClassName = null;

      
    private static Method getFileName = null;

      
    private static Method getMethodName = null;

      
    private static Method getLineNumber = null;

    …. 
    // 以下代码省略

     

    可以看到,Log4J 
    1.3仍然兼容JDK1.3,而且为JDK1.4也做了相应的优化。

    五、JDK1.5的Thread Stack Trace
    JDK1.5在Thread类里面引入了getStackTrace()和getAllStackTraces()两个方法。这下子,我们不用 (
    new Throwable()).getStackTrace ();可以调用

    Thread.getCurrentThread().getStackTrace()来获得当前线程的运行栈信息。不仅如此,只要权限允许,还可以获得其它线程的运行栈信息。

     

        
    /**

         * Returns an array of stack trace elements representing the stack dump

         * of this thread.  This method will return a zero-length array if

         * this thread has not started or has terminated. 

         * If the returned array is of non-zero length then the first element of 

         * the array represents the top of the stack, which is the most recent

         * method invocation in the sequence.  The last element of the array

         * represents the bottom of the stack, which is the least recent method

         * invocation in the sequence.

         *

         * If there is a security manager, and this thread is not 

         * the current thread, then the security managers 

         * checkPermission method is called with a 

         * RuntimePermission("getStackTrace") permission

         * to see if its ok to get the stack trace. 

         *

         * Some virtual machines may, under some circumstances, omit one

         * or more stack frames from the stack trace.  In the extreme case,

         * a virtual machine that has no stack trace information concerning

         * this thread is permitted to return a zero-length array from this

         * method.  

         *

         * 
    @return an array of StackTraceElement, 

         * each represents one stack frame.

         *

         * 
    @since 1.5

         
    */


        
    public StackTraceElement[] getStackTrace() {

            
    if (this != Thread.currentThread()) {

                
    // check for getStackTrace permission

                SecurityManager security 
    = System.getSecurityManager();

                
    if (security != null{

                    security.checkPermission(

                        SecurityConstants.GET_STACK_TRACE_PERMISSION);

                }


            }


     

            
    if (!isAlive()) {

                
    return EMPTY_STACK_TRACE;

            }


     

            Thread[] threads 
    = new Thread[1];

            threads[
    0= this;

            StackTraceElement[][] result 
    = dumpThreads(threads);

            
    return result[0]; 

        }


     

        
    /**

         * Returns a map of stack traces for all live threads.

         *

         * 
    @since 1.5

         
    */


        
    public static Map getAllStackTraces() {

            
    // check for getStackTrace permission

            
    // Get a snapshot of the list of all threads 

        }


     

    六、总结
    从总的发展趋势来看,JDK不仅提供越来越多、越来越强的功能,而且暴露给用户的控制方法越来越多,越来越强大。

    如此一来我 自己的 实现是这样的

     

     

        static {
            p 
    = new Properties();
            dbconfig 
    = new Properties();
            
    //Object obj = new Object();//构造一个对象,应为在 static 中无法获知当前类,用obj它的class来获得属性文件
            InputStream is = null;//obj.getClass().getResourceAsStream("DBConfig.properties");
            StackTraceElement ste[] = (new Throwable()).getStackTrace();
            
    try {
                is 
    = Class.forName(ste[0].getClassName()).getResourceAsStream("DBConfig.properties");
            }
     catch (ClassNotFoundException e2) {
                
    // TODO 自动生成 catch 块
                e2.printStackTrace();
            }

    //        for(int i=0;i<ste.length;i++){
    //            System.out.println("" + ste[i].getFileName() + "  [" + ste[i].getClassName() + "]::" + ste[i].getMethodName() + "@" + ste[i].getLineNumber() + "行");
    //        }
            try {
                dbconfig.load(is);
            }
     catch (IOException e1) {
                
    // TODO 自动生成 catch 块
                e1.printStackTrace();
            }

            String driver 
    = dbconfig.getProperty("JdbcDriverClass");
            
    if(driver==null||driver.equals("")){
                driver 
    = JDBC_DRIVER;
            }

            String url 
    = dbconfig.getProperty("JdbcUrl");
            
    if(driver==null||driver.equals("")){
                url 
    = JDBC_URL;
            }

            String user 
    = dbconfig.getProperty("JdbcUser");
            
    if(driver==null||driver.equals("")){
                user 
    = JDBC_USER;
            }

            String pwd 
    = dbconfig.getProperty("JdbcPassword");
            
    if(driver==null||driver.equals("")){
                pwd 
    = JDBC_PWD;
            }


            p.setProperty(
    "driverClassName", driver);
            p.setProperty(
    "url", url);
            p.setProperty(
    "password", pwd);
            p.setProperty(
    "username", user);
            p.setProperty(
    "maxActive""30");
            p.setProperty(
    "maxIdle""10");
            p.setProperty(
    "maxWait""1000");
            p.setProperty(
    "removeAbandoned""false");
            p.setProperty(
    "removeAbandonedTimeout""120");
            p.setProperty(
    "testOnBorrow""true");
            p.setProperty(
    "logAbandoned""true");

            
    try {
                bds 
    = (BasicDataSource) BasicDataSourceFactory.createDataSource(p);
            }
     catch (Exception e) {
                
    // TODO 自动生成 catch 块
                e.printStackTrace();
            }

        }
    这样就实现了在静态块中访问当前类信息的方法了,也许有朋友会问,为什么不直接把当前类名传递给 Class.forName呢,的确这样是可行的,但我考虑到如果我的类名改变了呢,而且,这个类名字符串写进去就成了硬编码来,这个似乎不太好。另外,我也考虑过用过 init(String path)方法,这样更灵活,问题是这个类是个静态类,每次调用都不知道以前是否在某个地方调用过这个init 方法,当然了这个类作static类似乎不太好,因为它毕竟对不同时候应该配置也不一样。这就不讨论了,主要是学习了这个 StackTraceElement类,开拓下思维!
    展开全文
  • ②输入USE + 数据库名称 ③点击执行 2.知道建表语句格式为 CREATE TABLE 表名 ( 列名1 类型, 列名2 类型, 列名3 类型, ... ) 3.例如我需要创建一个充值表: ①输入自己所需要的的列名以及数据类型...

    如何使用SQL语句建表呢?

    之前涉及过的知识,随着时间的流逝需要我们不断地重复。

    1.①选中我们需要的数据库

    ②输入USE + 数据库名称

    ③点击执行

    2.知道建表的语句格式为

    CREATE TABLE 表名
    
    (
    
    列名1 类型,
    
    列名2 类型,
    
    列名3 类型,
    
    ...
    
    )

    3.例如我需要创建一个充值的表:

    ①输入自己所需要的的列名以及数据类型

    ②选中代码

    ③点击执行

    我们可以看到提示命令已经成功完成,说明表已经建好了。

    也会提示出现错误的地方在第几行,先改正错误,再点击执行。

     

    4.点击刷新的图标,就可以看到刚才建好的数据表

     

    展开全文
  • vss如何使用(图解)

    热门讨论 2011-04-25 15:10:48
    在浏览器上,你可以浏览你的数据库、查看项目列表、显示文件统计信息、执行命令对文件和项目进行操作等。浏览器的最上方的标题栏是你当前连接的数据库。VSS使用符号来提供有关文件和项目信息。 菜单栏的下面是常用...
  •  第三:对于用来执行查询的数据库帐户,限制其权限。用不同的用户帐户执行查询、插入、更新、删除操作。由于隔离了不同帐户可执行的操作,因而也就防止了原本用于执行SELECT命令的地方却被用于执行INSERT、UPDATE或...
  • djangocrontab

    2016-03-21 09:41:00
    最近需要考虑如何在django环境中跑定时任务. 这个在stackoverflow也有对应讨论, 方法也有不少, 这边简单尝试和总结下. ... 项目名称为mmtest, 应用名称为mma_cron(说实话我也不知道自己怎么取这样...
  • 实现 DataAdapter:描述 DataAdapter 的特性,并说明如何为 .NET 数据提供程序实现您自己的 DataAdapter。 示例 .NET 数据提供程序:包含 .NET 数据提供程序的示例实现。   数据集 数据集介绍:提供什么是 ADO.NET...
  • C# 如何获取本地数据库SQL Server2008的数据库服务器名称和数据库名称?不知道为什么我的Win7就是注册不了sqldmo.dll,经过学习,基本可以自己使用SMO解决这些问题。 我在百度中找到了这个问题的答案,不过不知道为...
  • 皮艇 一组很小但有效的命令行实用程序,可与BOAT上的CAN网络配合使用。... 在这里,您可以找到有关如何自己的计算机上构建程序以及如何开始扩展PGN数据库的说明。 版本历史 参见 。 (C)2009-2021,Kees Ve
  • 疯狂程序员

    热门讨论 2012-07-18 18:05:32
    绝影觉得王江的老爸怎么看也不像教育部长,甚至连自己的老爹都没法比。虽然经过这几天王江的洗礼,应该算是“如雷贯耳”了,但就是咋看咋不行。他老爸不停的说:“儿哟,再考个大学要多少钱哟。这学费都交了8000多了...
  • 该模块应使所有知道magentos型号名称的人都可以通过soap-api访问它们。 创建此存储库主要原因是: 我厌倦了为每个新安装模块实施数十个api调用 训练自己知道,一旦获得api-user授予访问权限,它就可以做...
  • 本周JAVA心得

    2019-05-18 23:24:37
    本周我们学习了如何自己设置好友显示出来,还有将数据库相关代码整理到一起,老师说比较简单其实还是挺麻烦哈哈。 简单搜了一下数据库的好处 存档海量信息,历史数据随时可查。例如十年前数据,如果...
  • 最大不同是,Hashtable方法是Synchronize,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它方法实现同步,而HashMap 就必须为之提供外同步。 Hashtable和HashMap采用hash/rehash算法都大概...
  • 学生的主要功能: (1)查询功能:学生主要是查询自己的成绩而不能对信息进行修改等! 三.系统流程图 四.E-R模型图 五.逻辑结构设计 1.首先使用SQL Server 2005 创建数据库文件 create database jwgl on primary ( ...
  • Oracle专家高级编程--详细书签版

    热门讨论 2012-08-21 11:57:09
     本书是一本关于使用Oracle成功开发应用程序工具手册,由Oracle公司资深开发人员Thomas Kyte集自己多年开发经验编写。学习本书能帮助读者彻底理解Oracle工作原理,并将Oracle作为一个强大计算环境来使用,...
  • 专业版更提供了特殊的方案,脚本可以回调程序员自己的函数,因此,Visual Graph不支持的技术,程序员可以自行实现。 完备性: Visual Graph充分考虑了用户方方面面的需求,把许多技术做到了极致,超前设计了许多...
  • project-3m-database-源码

    2021-05-18 13:17:07
    有时会是高级美食,而有时会是非常有名的食谱,代表了非常好的一种美食,而且味道也非常好,因此在肚皮美食中占据了自己的位置。 概括 需要实施的功能 数据库 功能性 使用的技术 测验 响应测试 入门 部署方式 演示...
  • 专业版更提供了特殊的方案,脚本可以回调程序员自己的函数,因此,Visual Graph不支持的技术,程序员可以自行实现。 完备性: Visual Graph充分考虑了用户方方面面的需求,把许多技术做到了极致,超前设计了许多...
  • 专业版更提供了特殊的方案,脚本可以回调程序员自己的函数,因此,Visual Graph不支持的技术,程序员可以自行实现。 完备性: Visual Graph充分考虑了用户方方面面的需求,把许多技术做到了极致,超前设计了许多...
  • 专业版更提供了特殊的方案,脚本可以回调程序员自己的函数,因此,Visual Graph不支持的技术,程序员可以自行实现。 完备性: Visual Graph充分考虑了用户方方面面的需求,把许多技术做到了极致,超前设计了许多...
  • visual source safe 教程

    2010-07-14 11:03:58
    在浏览器上,你可以浏览你的数据库、查看项目列表、显示文件统计信息、执行命令对文件和项目进行操作等。浏览器的最上方的标题栏是你当前连接的数据库。VSS使用符号来提供有关文件和项目信息。 菜单栏的下面是常用...
  • CMD 登录oracle

    千次阅读 2017-02-17 16:19:00
    当oracle默认账户密码不知道自己创建账户密码也记不得,如何进入oracle呢? 可以直接进入oracle后台管理,查询默认账户以及密码,为了简单,可以直接更改默认账户密码,或者直接点,重新创建账户以及密码。 ...
  • 在浏览器上,你可以浏览你的数据库、查看项目列表、显示文件统计信息、执行命令对文件和项目进行操作等。浏览器的最上方的标题栏是你当前连接的数据库。VSS使用符号来提供有关文件和项目信息。 菜单栏的下面是常用...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 142
精华内容 56
关键字:

如何知道自己的数据库名称